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
Both this code and `PropertyHelper` describe themselves as designed for performance.  But are we making the correct choice in this PR?  That is we're changing optimizations here and should have the numbers to back up the choice.
One alternative would be to fix this method to operate correctly under mono -- then use it in `PropertyHelper`.