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
@dougbu it was never truly there. We were forcing the `TagHelperParseTreeRewriter` to be our own version that happened to have a finite number of `TagHelperDescriptor`s already discovered.  Now it no longer makes sense, we discover them via `@addtaghelper` methods which then also removes the necessity for us to pollute the `Optimizer`s list on the `RazorParser` with the built-in `TagHelperParseTreeRewriter` (`TagHelper`s are now part of the language which is why I consider it built-in).

#162 is there to provide a first class way to auto-discover `TagHelperDescriptor`s without the need of an `@addtaghelper`.  @yishaigalatzer and I talked about this last week and decided we did not need it for v1.