[Issue #730] Attribute Routing: Flesh out attributes - Part 2

1. Unsealed the Http*Attributes so that they can be extended and customized.
2. Added the same constructors as HttpGet to the rest of the Http*Attributes.
3. Added unit tests to validate the implementations for the IActionHttpMethodProvider.
4. 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.
there's a work item to allow multiple. However it's possible today to do something like:

```
[HttpPost("/Foo")]
[HttpGet("/Bar")]
public void blah() { }
```

and it just won't work.