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



Partial fix for #878
I suggest this be `public` in Core and be used only in `ViewDataDictionary` for now