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



Partial fix for #878
The way it worked was that this constructor invoked https://github.com/aspnet/Mvc/blob/dev/src/Microsoft.AspNet.Mvc.Core/ViewDataDictionary.cs#L22 (as part of the `this()` call) and then copied individual items from the source to the newly created `ModelStateDictionary`. This effectively was the same pattern `ViewDataDictionary` followed and was thus affected by dictionary resizes depending on how many items are in the `ViewDataDictionary`. This change avoided by calling the copy constructor of `ModelStateDictionary` which was now backed by a `CopyOnWriteDictionary` internally.