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
we have a `AssociatedMetadataProviderTest` class but it checks model accessor return values only for the case where the containing instance is `null`.  add more tests to exercise the updated code in this class.