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
Understand the conflict but the user has an obvious fix in that corner case.  And the tag name in the descriptor might be `*` which is illegal in a C# identifier.
Could also double existing underscores to avoid the corner case without making the names ugly and long.  I just don't think it's worthwhile.