1. Added extension point for custom ITypeMap. The current design allows for overriding of specific types but this implementation allows replacing the default type map for all types