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
My guess is if we use a `IEqualityComparer` for `Equals`, we should pass them into the HashCodeCombiner and use that to compute the item's HashCode. 
```C#
public HashCodeCombiner Add<TVal>(TVal value, IEqualityComparer<TVal> comparer)
{
    return Add(comparer.GetHashCode(value));
}
```