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
bit convoluted to replace both the `RazorEngineHost` and the `CSharpCodeBuilder` just to change a property referenced from the `CSharpCodeVisitor`.  could non-lazy properties be surfaced on `RazorEngineHost` and / or `CSharpCodeBuilder` to make this more straightforward?  would those have to be `Func<>` properties and would that look better or worse?