[Design] 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`
@yishaigalatzer I decided not to copy over the `DataTypeUtil` class from MVC.  That class avoids the `ToString()` calls done in `GetDataTypeName()` for performance reasons.  Comments there make it seem like a significant problem but I prefer to wait and see whether this method has a measurable perf impact.  Let me know if that was the wrong call.