Add TagHelper parse tree rewriter.

- The visitor looks for TagBlock's that match registered TagHelpers and rebuilds them into TagHelperBlock's.
- Added the code generator and corresponding chunk for a TagHelperBlock.
- Added syntax tree specific objects & helper methods to create accurate tag helper structures.

#71 

**NOTE:** This does not support malformed tag helpers.  It expects all tags (that are tag helpers) are validly formed.  That fix will come with: https://github.com/aspnet/Razor/issues/104

*Also* I opened a separate test PR due to size here: #110

Issue: #71
- isn't this again
 `/// The <see cref="Block"/> responsible for this <see cref="TagHelperCodeGenerator"/>.` ?
- if you're referring to the `CodeGenerator` property of the `Block` type, say
 `/// The <see cref="Block"/> with a <see cref="Block.CodeGenerator"/> property responsible for ...` but then it's unclear what _this_ code generator is responsible for.
- in any case "thats" isn't a word and this sentence doesn't scan