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
These all used to be created in the RazorParser.  That implementation limited us due to us not having access to the "Host".  The "Host" is the communication mechanism between Mvc and Razor and therefore can transport some vital information.  In this case we need the TagHelperProvider for the TagHelperParseTreeVisitor.  I felt here was better than in the RazorParser.

When/if we implement an extensibility mechanism for optimizers this location will most likely change.  Associated Issue: https://github.com/aspnet/Razor/issues/105