type mapping - added ablity to override how type instances are created (e.g. to support types without public parameterless constructors)