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 isn't it up to the host whether the runner and the scope manager are new'd up, in DI, or whatever?  I like anything that gives the host (or the page base class) the option of grabbing these from DI but now they _must_ be in DI which is not flexible
for example, `GeneratedTagHelperContext` could include `string` properties naming the tag helper runner and scope manager sources.  the code generator would output `var __sm = {source for sm}; var __run = {source for run};` near the top of `ExecuteAsync()`.  then Razor doesn't need to know the runner or scope manager type names nor whether `__sm` and `__run` are assigned from properties, `new` expressions, method calls, ...
basically this visitor should not exist