Modify AssociatedMetadataProvider to use PropertyHelper to create accessor

Additionally change it to use TypeExtensions.GetReadableProperties to get
property list. This causes it to ignore indexers which should not be
considered.

Fixes #595
test
- whether inherited properties are included
- whether overridden properties are duplicated in the `GetReadableProperties()` enumeration
- whether `new` properties are duplicated in the `GetReadableProperties()` enumeration