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
- single space after period (channeling @Eilon though I hear this one from him fairly often)
- nit: just one sentence says it all: `/// Parameter {0} must not contain null tag names.`