[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.
I got the exact opposite feedback from @harshgMSFT I originally had it that way. I think that both approaches are valid and this approach is more direct and efficient (although I don't care about efficiency here). But for a private helper method there's no need to be more generic, this method does the job and hides the details from the method where its called, which is the main point. If we need something more generic later it can easily be refactored.