[Fixes #739] Attribute Routing: Multiple routes per-action

1. Support multiple [Http*] attributes on an action.
2. Support multiple [Route] attributes on a controller and on an action.
3. Support creating multiple attribute routes using [AcceptVerbs("...", Template ="...")]
4. Detect attribute routed actions during action discovery
   and return one action per [Http*], [Route] or [AcceptVerbs] attribute found on the method when there is
   at least one valid attribute route.
5. Merge all the HTTP methods of [Http*] and [AcceptVerbs] attributes in a method during action discovery 
    when there are no valid attribute routes defined on the action.
6. Build one action descriptor per controller [Route] + action [Http*], [AcceptVerbs] or [Route] combination
   in an action.
7. Disallow the use of attributes that do not implement IActionHttpMethodProvider and
    IRouteTemplateProvider simultaneously in methods that define attribute routed actions and throw an
    exception during startup.
8. Disallow mixing attribute routed and non attribute routed actions on the same method and throw an
    exception during startup.
9. Disallow creating attribute routed actions that have same template and have an HTTP method in common
    on the same action and throw an exception during startup.
this is unreadable - break it up