[Design] Add TagHelperTypeResolver.

- The `TagHelperTypeResolver` is responsible for determining the format of lookup texts used throughout the tag helper system.  By default it handles the following formats:
```
"assemblyName"
"assemblyName, #.#.#.#"
"assemblyName, #.#.#.#, specificType"
```
- It also restricts what types are considered `TagHelper`s.  In this implementation we only accept public, non-nested, non-abstract, non-generic `TagHelper`s.
- Added tests to validate the expected functionality.

#158
bit of a conflict here.  text of `FormatTagHelperTypeResolver_InvalidTagHelperLookupTextAssemblyVersion` indicates four numbers are required.  however `Version.TryParse()` is perfectly happy with two or three numbers.