Add `[HiddenInput]` and `ModelMetadata.HideSurroundingHtml`

Issue #843 
- address related TODO items
- add missing validation messages to `@Html.Editor()` (TODO that wasn't tracked here)
- sort `ModelMetadata.Properties` as MVC 5.2 does (part of #964)

@rynowak this is consistent w/ MVC 5.2.

`ModelMetadata.Properties` is used in a few contexts but the order model properties are included in the `@Html.Display()` and `@Html.Editor()` return values is the most visible.  There's no opt-in but there is an opt-out: Users can create their own display or editor templates for whatever types they like, ordering the properties however they wish.