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 looked at this again and I can't seem to do pure expression trees without making the property not generic.  What I can do is change it to get Type of object and create/cache expression trees of a property with that type.  So IDelegateFactory instead of ```LateBoundPropertyGet``` returned, it will be ```Func<object, LateBondPropertyGet>```.  Non generic will just ignore object and return the lambda as normal.  GetType will have to be used but once I got the property the first time it should speed up by not having to recreate it.

I don't have it all ready to submit yet, but I know the extra function I can do the caching of the expression, and retrieve it by type.