[Fixes #734] Attribute Routing: Implement Name

1. Added support for Name in attribute routing. Name can be defined using [RouteAttribute]
and the different Http*Attributes, for example [HttpGet].

2. Names defined on actions always override names defined on the controller.

3. Actions with a non empty template don't inherit the name from the controller. The name
   is only inherited from the controller when the action template is null or empty.

4. Multiple attribute routes with different templates and the same name are not allowed.
This is a sample generated error message. It points the name given to the attribute routes, the actions with an attribute route with that name, and the template associated with each attribute route defined for a given action.

I think it's fine, but if you feel there's anything that can be improved I'm open to suggestions:

The following named attribute routed actions have the same name 'Products', but different templates:
'Microsoft.AspNet.Mvc.Test.ReflectedActionDescriptorProviderTests+InvalidAttributeRouteNamesController.Get': 'Products'                'Microsoft.AspNet.Mvc.Test.ReflectedActionDescriptorProviderTests+InvalidAttributeRouteNamesController.Get': 'Products/{id}'
'Microsoft.AspNet.Mvc.Test.ReflectedActionDescriptorProviderTests+InvalidAttributeRouteNamesController.Put': 'Products/{id}'
'Microsoft.AspNet.Mvc.Test.ReflectedActionDescriptorProviderTests+InvalidAttributeRouteNamesController.Post': 'Products'   'Microsoft.AspNet.Mvc.Test.ReflectedActionDescriptorProviderTests+InvalidAttributeRouteNamesController.Delete': 'Products/{id}'