Prevent AmbiguousMatchException when an object has two properties with the same name

If an object has both generic and non-generic versions of the same property, they will have the same property name, causing an AmbiguousMatchException to be thrown during property look-up. To prevent this, I modified the PropertyInfoValueGetterFactory to iterate all properties matching the binding flags and to assign the first property that matches the specified name (in a case-insensitive manner).