Add TagName attribute for tag helpers.

**Reason for PR:** We initially pushed this out to be done later but this is needed to properly complete https://github.com/aspnet/Mvc/issues/1116 and https://github.com/aspnet/Mvc/issues/1168.

- Made it so the `TagHelperDescriptorFactory` could pull tag name targets from `TagNameAttribute`s on types.
- Tested the behavior between `TagNameAttribute` and `TagHelperDescriptorFactory` (the only consumer of the attribute).
- Made sure to test duplicate and inherited class scenarios.

#120
- never "Foo" or "Bar" et cetera
- also test:
 - other `[TagName("name")]` overload
 - multiple `[TagName]` attributes on a `class`