Add @addtaghelper directive. 

- Also added some infrastructure pieces for it such as the ITagHelperDescriptorResolver and the default implementation TagHelperDescriptorResolver which will be filled out in a later commit.
- Reworked some extensibility points to allow accessibility of the descriptor resolvers per offline discussions.
- Fixed existing tests to work with new RazorParser.
- Validated directive syntax tree creation, errors and code generation.

#111
after talking offline, my preference here is to project users into double quotes but _not_ require (or even allow) them to be typed into the Razor file.  so the syntax would be something like `@addtaghelper assembly[, class]`.  suspect the parser would turn everything from the first space to EOL into a single `Span` automatically.  suggest it's optional to support comments at the end of this line -- don't do it if that takes any time.
separately should `.Trim()` what the user types, allowing as many initial or trailing spaces as the user wants.