Adding attribute routing

Adds a rough cut of attribute routing for URL matching (incoming requests only).
Good feedback. We already have a conclusion from the previous design meeting. Here's the truth table.

`[Route("api/Foo")]` + `[HttpGet("bar")]` = `api/Foo/bar`
`[Route("api/Foo")]` + `[HttpGet]` = `api/Foo`
`[Route("api/Foo")]` + `(nothing on the action)` = `api/Foo`
`(nothing on the controller)` + `[HttpGet("bar")]` = `bar`
`(nothing on the controller)` + `[HttpGet]` = `(not attribute routed)`