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
`Default` implies overridable to me so being `readonly` would defeat that meaning.  You felt that having these fields as 'Default' would be good and the other two don't really make sense from an `overridable` standpoint.  Granted, I initially had these without the `Default` because them being overridable wouldn't gain the user much.  The only reason why they're `internal` and not `private` is because the `Declaration` and `Property` visitors utilize them to initialize their values.  This class uses them during runtime.

If you feel like these provide value as being a first class extensibility point we could throw these on the `TagHelperGeneratedContext`.