Refactored CodeGeneratorContext to CodeBuilderContext.

- Needed to separate the context's of "generation" and "building" to enable the communication of the TagHelperProvider.
I'm trying to think of an alternate use of this object "outside" of generating C# code and depending on how tooling implements their portion of TagHelpers they "MAY" need access to the TagHelperProvider from the parser results, that being said though I see your point.  We need a way to get the TagHelperProvider "out" of the parser and the portion of the Parser that will create the TagHelperProvider must be here: https://github.com/aspnet/Razor/blob/CodeBuilderContext_Refactor/src/Microsoft.AspNet.Razor/Parser/RazorParser.cs#L146 OR the first "Optimizer".

We pass other information out of the parser like the "Document" that's needed only code gen and tooling and is really just flowed throughout the application (much like the tag helper provider).

Do you see a better approach to getting this data out of the parser and making it still available to tooling/the code builder?