Adding parameter replacement

Provides token replacement for attribute routing template using a syntax like:

`api/[controller]/{id?}`

With this change the use of controller and action as parameters in attribute routes is disallowed, and will reported as an error. This is the cool new way to do it, which will provide more consistent behavior, and better performance.

Majority of the changes here are to provide a good experience for reporting errors across all the attribute routes.
you add a route template to the AD, but don't generate a groupID for the route. This is something you could only do by writing a custom `ActionDescriptorProvider` which likely indicates that you're using a 3rd party attribute routing system (or you just have a bug).

Either way we can't process it so we ignore it.