A few speed improvements.  First, it looks like +conformsToProtocol needs to grab a pthread_rw_lock, so it seems to be slightly more expensive than +isSubclassOfClass:.  In the keyedArchiverTransformer checks, it was marginally faster to check the class first, since NSData properties are relatively rare, and it seems (given its placement) that it gets called a fair amount.
Secondly, the class validation macros were creating local NSArray instances when given a single Class argument, which was not necessary.  They were also evaluating their arguments more than once, whin in several places was an NSArray creation, meaning that the NSArray would be allocated once every time the argument was used in the macro body.  Changed to use a local variable to ensure it was only evaluated once.
Thirdly, changed most places where NSArrays or NSSets or similar objects were created every time through a transformer body, so that they are either static variables initialized via dispatch_once, or created once on the initial call to get the transformer, with the NSArray instance being captured by the block and just being reused.
My test app actually doesn't use most of these transformers so the speedup was neglible, but it could avoid a substantial number of objects being created when they do get used repeatedly during a mapping operation.
Change all of the validClasses arrays to be inside of dispatch_once sections, so that they are only created once no matter how many times the transformers are obtained or used.
Merge pull request #16 from carllindberg/2065-AvoidArrayCreation

Avoid temporary object creation during transformation