Add initial implementation of MacroKit

Macros for singletons, finding the device model and the iOS
version.
Add support for detecting block availability at runtime
Add macro for debugging
Better comments for the singleton macros