[Design] Add TagHelper parse tree visitor.

- 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
More efficient.  Calling .Content  essentiall iterates through all symbols and concats symbols contents.  In the case of IsSelfClosing we'd have to iterate the entire list to determine size, then pull the ending part of the array to check for ```/>```.  In my mind the Content method seemed alright there in comparison with what we'd have to do.  Feel free to set me straight in my perf understanding :smile: