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`
The comma past `displayFormat` seems odd