[Design] Rework `ViewDataDictionary` constructors to ensure `ModelMetadata` is ne...

...ver `null`

- `ViewDataDictionary<TModel>` constructors now pass `typeof(TModel)` to base constructors
- remove `ViewDataDictionary<TModel>.ModelMetadata` override
- add more doc comments

nits:
- change `RazorPageActivator` to pass current `ModelStateDictionary`
- change 2 other `ViewDataDictionary` copy constructor calls to avoid
  uselessly copying `Model` and related information from source
- make a few `ViewDataDictionary` properties get-only
@rynowak yes, the only requirement is calling one generic constructor at line 51 in `RazorPageActivator` and a different overload at line 58. that code currently uses an `ITypeActivator` but could certainly use Reflection (for example).  not sure we need to make a change there unless driven by further changes in `ViewDataDictionary`.