Fix for #91 - Turn some commonly allocated types into structs

These types are allocated for every state transition in the parser (State)
or every character that's read (character reference) and are fairly
compact. Turning them into structs will remove a significant number of unnecessary
allocations in the parser.

For our razor code generation benchmark, making these changes yields about
500-750ms of speedup (out of 40000ms) or about 1%.
Fix for #90 - removing Enum.HasFlags

This is a perf improvement of about 500ms for our razor code generation
benchmark on my dev box. That's about .8% of the overall execution time of
this benchmark.

This change will remove a bunch of unnessary allocations from the
parsing/code-generation path, and should improve responsiveness.

For reference Enum.HasFlags performs boxing of the enum value, and then
does a type comparison to see if the types are the same. This is
significantly more costly than a normal bitwise and comparison, and it
results in allocations.
Reviving support for instrumentation in CSharpCodeVisitor

Fixes #42
Ensure pragma checksum is prepended to generated file
Fixes #160
Don't calculate checksum in design time mode
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
Fix test to work with TH rewriters.

- Added understanding to the ParserTestBase for TagHelperBlock's
- Added a helper class MarkupTagHelperBlock to make building test TagHelpers easier.
- Fixed some existing tests that "new"d up the RazorParser and didn't obide by the new contract (to provide optimizers).

#71
Add tests to verify TagHelperParseTreeVisitor.

- Added tests to validate TagHelperParseTreeVisitor when dealing with valid HTML elements.

#71
Refactored CodeGeneratorContext to CodeBuilderContext.

- Needed to separate the context's of "generation" and "building" to enable the communication of the TagHelperProvider.
Add Microsoft.AspNet.Razor.Runtime src and test project.

#136
Rebased onto latest dev.

- Fixed tag helper parse tree visitor rebase error.