Modifying ViewDataDictionary and ModelStateDictionary to copy on write instead of eagerly copying.



Partial fix for #878
This was used to check for not-null in a unit test. Spoke to @dougbu offline and we decided we could look at another property that `MetadataProvider` hydrates to verify it is being set.