Support building with iOS 5 SDK and running on iOS 5 Simulator.

Revert the use of NSMapTable back to NSMutableDictionary. All the keys being used are either copyable (e.g., blocks) or can be made copyable (NSMessagePattern did support NSCopying, but this was removed when the code no longer required it).

Add wrapper for a function declaration that changed in 5->6 transition, and define the NS_ENUM macro added in the iOS 6 SDK.

The iOS 6 collection subscripting methods are actually supported for iOS 5 builds made with a new version of the compiler (Xcode 4.4+, maybe earlier), using a libarclite library that is automatically linked in.