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



Partial fix for #878
nit: check `viewData.ModelMetadata` for `null` before this line