Reverse lookup descriptor property, descriptor serialization, descriptor assembly resolution hook: DTH Communication Part 1.

*This PR consists of several different aspects entailed by #214. It essentially covers bullet points 1-3.*

Add `AssemblyName` to `TagHelperDescriptor`.
- TagHelperDescriptor's need a way to showcase where they came from so tooling can reverse look them up.
- Update tests to specify `TagHelperDescriptor` assembly names.

Change `TagHelperAttributeDescriptor` to not depend on `PropertyInfo`.
- Right now the only information that is used from the `PropertyInfo` is the `PropertyName` and the `PropertyType`, therefore changed the `PropertyInfo` property on `TagHelperAttributeDescriptor` to be `AttributeTypeName` since we already had an accessor for `AttributePropertyName`.
- Modified test comparers to validate type names.

Add extensibility point to resolve descriptors in assembly.
- Modified our default `TagHelperDescriptorResolver` to provide a protected virtual method that it uses under the covers to resolve descriptors for an entire assembly. This will enable tooling to cache descriptors on a per-assembly basis.

#214

Part 2 PR: #219

/cc @pranavkm 
nit: remove `private set;` to remove unnecessary setter.  not _just_ to make @pranavkm happy since doing this for all properties here would make the class entirely immutable.