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



Partial fix for #878
`comparer` feels redundant since some large percent of the passed `sourceDictionary` arguments will be a `Dictionary` and therefore will have a public `Comparer` property.  can this duplication be avoided?