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

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

Thanks for changing this, but can you split this to 2 if statements and cache property.GetPropertyOrFieldType() (or property.GetPropertyOrFieldType().GetGenericArguments()) to a variable?