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)

Reviewers: This is what MVC 5.2 does, in hopes it results in a "stable" order.  But the order remains unpredictable.  For example `<input/>` elements returned by the default `object` editor template (`@Html.EditorFor(m => m.SomeObjectProperty)`) will be ordered however the CLR chooses, assuming `ModelMetadata.Order` values are all the default.

Should I add `.ThenBy(m => m.PropertyName)` ?