Refactored CodeGeneratorContext to CodeBuilderContext.

- Needed to separate the context's of "generation" and "building" to enable the communication of the TagHelperProvider.
observations:
1. since nothing in this PR dereferences the `TagHelperProvider` instance, its addition seems easily separated from the refactoring done in this review
2. that'll make this review much less controversial
3. when we start passing around a `TagHelperProvider`, the first questions will be "who needs this?" and "where will it come from?"  with that info, we can work through how best to make the instance available.