implement a decision-tree-based action selector
Implement RouteKeyHandling.CatchAll
Modifying ViewDataDictionary and RouteValueDictionary to copy on write
instead of eagerly copying.

Partial fix for #878
NoContentFormatter: Writes 204 to the response status code if the value returned is null.
Add `HideSurroundingHtml` property to `ModelMetadata`
- #843
- add property as well as the related `[HiddenInput]` attribute
- use this property to address some TODOs in default display and editor templates
Address TODO item in default `object` editor template
- add validation elements per property in this template
- update editor template test to expect new `<span>` in result
Do not repeatedly evaluate `ModelMetadata.Properties` enumeration
- supports useful property updates of `ModelMetadata` instances in the collection
- provide a controllable ordering using the `Order` value
- part of #964
Add `[HiddenInput]`, `ModelMetadata.HideSurroundingHtml`, and `.Properties` tests

nits:
- add a few missing default `ModelMetadata` property value checks
- cleanup some redundancies in test data initializers
Correct test issues raised in PR