Refactored CodeGeneratorContext to CodeBuilderContext.

- Needed to separate the context's of "generation" and "building" to enable the communication of the TagHelperProvider.
bit of a shame `CodeBuilderContext` doesn't have an `internal` non-copy ctor for testing