Calculate `ModelMetadata.DataTypeName` based on metadata

- helps MVC helpers like `@Html.EditorFor()` select the correct template
- #933

nit:
- add XML doc for `DataTypeName` in base `ModelMetadata`
- an -> a in an adjacent XML comment in `CachedDataAnnotationsModelMetadata`
I know @Eilon would complain about the extra space before `<c>null</c>`