Unify the impl macros …
Using some more macro magic we can avoid having to duplicate our impl macro implementation for generic types. This will help when we want a version for CFDictionary with two type parameters.