Add builder to customize C++ build process

Add `Context.builder` attribute to customize C++ build process.  Among
other possibilities, this supports compilation using NVIDIA's `nvcc`
compiler for CUDA code.