Add @removetaghelper directive.

- Added parsing recognition of the @removetaghelper directive.
- Added TagHelperDescriptor handling: @removetaghelper will cause the system to ignore TagHelpers that are added via @addtaghelper.
- Added Chunk generation, this involved building a CodeGenerator (soon to be named ChunkGenerator) that pulled out the stringified @removetaghelper lookup text which it then uses to construct a RemoveTagHelperChunk.
- Modified CodeVisitors to now understand RemoveTagHelperChunk's.
- Added code generation, this involved creating a dummy string in order to give the @removetaghelper "..." coloring.

#112 

Split out tests into a separate PR to reduce noise (lots of tests): https://github.com/aspnet/Razor/pull/205
It's important to have different types for directives. It enables our code generation to uniquely identify what type of directive is on the page. I can rename the `TagHelperRegistrationVisitor` and its method though.

Second comment: Not intended to be overriden by users :smile:. Nearly all of our code visitors inherit from `CodeVisitor<CSharpCodeWriter>` which is why they're overridden.