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.
I think so,  I wrote it a while back, before I understood how to use expression trees from project to, so I believe it can.
Also this wasn't written with speed in mind because the request was so old.