[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.
rather than 'default value is 0' you might want to say that the generated route will get a default value of 0.

Which way does order work? is higher better? docs need to make it clear.