[Issue #730] Attribute Routing: Flesh out attributes

Added properties for order, name, constraints, default values and data tokens
to IRouteTemplateProvider and implementations on all the Http*Attributes.
Name and order are settable in those implementations, constraints, default values
and data tokens have a default virtual implementation that returns null.
This change also unseals the Http*Attributes so that they can be extended and
customized.

Added unit tests to validate the implementations for the IActionHttpMethodProvider
and IRouteTemplateProvider in the framework.

Added functional tests to cover extra attribute routing scenarios like a test for an
action with an HttpDeleteAttribute on it and action with AcceptVerbsAttribute and an
action with a custom HttpMergeAttribute implemented.
Yes, this is intentional. Adding route template to `[AcceptVerbs(...)]` would give a pretty bad programming experience because of the `params string[]` constructor. There's already a few ways to do this, and AcceptVerbs is there for back compat.