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
We'd have to plumb this through one way or the other; in MVC we already replace the host and its underlying constructs, the problem here is that we do need to do heavy hand replacement because in the end Tag Helpers are just a small feature of the overlying system... To replace them we need to dig deep :smile: .  

As for the `DecorateCodeBuilder` method, it's an existing construct.