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
Right.  To allay my remaining worries about future Razor developers, please add comments that
- show the correct syntax of the `@addtaghelper` directive; that's only shown in test code at the moment
- refer readers back to the `CSharpDesignTimeHelpersVisitor.Visit()` code and cover the quote restoration quirk
- mention the code generator isn't set up until users type both double quotes.  (Does that mean `CSharpDesignTimeHelpersVisitor` won't be in the picture until that point?)

Do we need a follow-up issue to fix leftover `AddTagHelperCodeGenerator` if user deletes one of their surrounding quotation marks?  Not sure of the implications but `Span` will be in an unusual state at that point.