Add TagHelperDescriptorResolver implementation.

- This involved also adding a TagHelperTypeResolver and TagHelperDescriptorFactory.
- The TagHelperTypeResolver is responsible for determining the format of lookup text's used throughout the tag helper system.  By default it handles the following formats:
"assemblyName"
"specificType, assemblyName"
- It also restricts what types are considered TagHelpers.  In this implementation we only accept public, non-nested, non-abstract, non-generic TagHelpers.
- The TagHelperDescriptorFactory is responsible for converting a Type to a TagHelperDescriptor.
- Added tests to validate TagHelperDescriptorResolver, TagHelperTypeResolver and TagHelperDescriptorFactory.

#99
#158
nit: these micro-helpers are harder to read than inlined code such as
``` c#
  string typeName;
  string assemblyName;
  if (data.Length == 1)
  {
    typeName = null; // or string.Empty
    assemblyName = data[0].Trim();
  }
  else
  {
    typeName = data[0].Trim();
    assemblyName = data[1].Trim();
  }
```