refactored type name mapping

type names are now mapped using a static lookup table; all built-in types
information instances are now members of uniform_type_info_map to get rid
of as much heap allocations as possible