There is one CodegenCx per codegen unit. Each one has its own LLVM
llvm::Context so that several codegen units may be processed in parallel.
All other LLVM data structures in the CodegenCx are tied to that llvm::Context.
TyCtxt (and related cache datastructures) can’t be move between threads.
However, there are various cx related functions which we want to be available to the builder and
other compiler pieces. Here we define a small subset which has enough information and can be
moved around more freely.