Prepare to use LLVM in a threadsafe fashion

Work towards #6511.

To isolate LLVM among threads, the main need to to use different `LLVMContextRef` structures. This is easy enough to do by storing a task-local context while translation is happening.

There aren't that many points in the LLVM api which actually need a context, so this wasn't too bad of a change in that respect. All of the bindings to functions which implicitly take a global context have been removed to prevent them from being used again.

Furthermore, this fixes memory leaks in the JIT by properly destroying the `ExecutionEngine` created after the JIT code finishes running.

One consequence of these commits is that LLVM needs to be re-built because the `disable-threads` and `disable-pthreads` options were previously passed to LLVM. By default these are no longer passed in.