Add support for `[DisplayName]` attribute, fixes #532

Included commits also correct a few undiscovered `ModelMetadata` issues
- @pranavkm could you review those files?

This isn't quite done because I haven't added the `@Html.Id()` unit tests
- wanted to get this out for eyes on the product code changes