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



Partial fix for #878
I meant: Why wasn't `protected` sufficient?  That worked fine before.