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
Out of the original `PropertyHelper` context, we're not necessarily dealing with an anonymous `object`.  In the particular case of `AssociatedMetadataProvider`, the previous code would have included `Item` (the indexer property).  Not sure `CreatePropertyValueAccessor()` would handle that case correctly but it previously could have happened.  Need tests to understand impact of this behaviour change.