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)

Should we track removing this idiom?  A few tests still check `Assert.Equal(true, ...)` on `ModelState.IsValid` values (and more) -- likely because that was once a `bool?` property.