Über Binding PartI : Adding support for property level binding using IBinderMetadata

getting it and liking it aren't synonymous.  while I can see making calls to `GetTypeInformation()` from derived classes would be a Bad Thing(tm), making `AssociatedMetadataProvider` aware of `ModelMetadata` properties at all.  we have bugs about the overall `ModelMetadata` design but this breaks from the existing design fairly significantly.  same for the strange `IModelNameProvider` special case added to this class recently.

think we need to take a step back and redesign the `abstract` methods in this class to remove any need for hacks like this.  should be done before we move forward with this PR.