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
It used to track attribute values among TagHelpers.  Aka you can have two `input` tag helpers that both require the `Type` attribute.  Ultimately the `attributeValueRecorded` is used to detect situations like this and generate different code:

```
inputTagHelper1.Type = "checkbox";
...
inputTagHelper2.Type = inputTagHelper1.Type;
```