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



Partial fix for #878
Please no.  Shouldn't be unit testing something primarily used to handle side effects (when `Model` is set) and within (a detail of) the constructor.