[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.
I was under the assumption that we allow multiple of these to be applied to the same action.

i.e.
```C#
[HttpGet]
[HttpPost]
```

In which case wouldn't the description be "that ~~only~~ supports the HTTP DELETE method"