Open Generic mappings

Addresses Issue #59

Changed layout to class structure and put generics at the end of the list.
Once found it will cache the map into the type mapping and the other find mappings will find it next time.