NH-3667 & NH-3102 Dictionary mapping-by-code improvements

https://nhibernate.jira.com/browse/NH-3667
https://nhibernate.jira.com/browse/NH-3102

Also you need to check that property.GetPropertyOrFieldType() is a generic type