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



Partial fix for #878
Missed that (because I don't expect to see `internal`).
But why is this `internal`?  We haven't been hiding details behind the `internal` plaque.  I see only 8 non-Common `internal class` examples in this repo -- and I'd argue at least some of those should be `public`.