[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
no protected.