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
nit: my comment about consistency and readability got buried.  think you responded `additionalTags` would need to be a `List<string>`. however the non-empty `List<string>` constructor just requires an `IEnumerable<string>` argument and `string[]` implements that interface.
(hmm, bit on the fence: I'm not sure I feel this is a nit.)