Tag helpers attribute code generation

- Followed the "decorate" pattern that we use throughout Razor.
- Enabled the CSharpCodeBuilder to decorate the CSharpCodeVisitor which exposes a CSharpTagHelperCodeRenderer which is indirectly used to render attribute values.
- Fixed up some existing classes that just new'd up the CSharpCodeVisitor class to instead take in the decorated version.
- Tested that we can successfully plugin our own TagHelperAttributeCodeGenerator.
- Moved some existing TagHelper test logic into its own base type to enhance code reusability.

#119
I don't see consistent choices here.  a new, required parameter on the `RazorParser` just for tag helpers on one hand and the need to replace 3 or 4 things to change TH attribute code generation on the other.
we've got a few TH-specific contexts.  why isn't this part of the one that gets passed from the host and contains names of generated methods?