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's not, the purpose behind it is to prevent situations like:

```C#
namespace Foo { class DivTagHelper {..} }
class Foo_DivTaghelper {...}
```

My current approach outputs:
```
__Div_Foo_DivTagHelper
__Foo_Div_Foo_DivTagHelper
```

Where if I just used the `TagHelperName` it'd output as follows:
```
__Foo_DivTagHelper
__Foo_DivTagHelper // Conflict
```