Create TagHelper specific C# code Generation.

- Added TagHelperChunk generation.
- Added CSharp visitors to understand TagHelperChunk's and render corresponding C# code.
- Refactored some code in the CSharpCodeVisitor so it could be utilized in other classes.

#72 

I split up the test portion of this PR to reduce noise.  PR: https://github.com/aspnet/Razor/pull/135
- why are two of these "Default" while the other two are not?  usage seems consistent now: host can't override any of these; different values aren't available in `GeneratedTagHelperContext`
- why can't the host override these values?
- why aren't the last two fields also `readonly`?  values are not changed (at least in this PR) and it's poor practise to expose mutable fields