Remove all usage of the global LLVMContextRef

This allows parallel usage of the rustc library
Have JIT execution take ownership of the LLVMContextRef

Also stop leaking the ExecutionEngine created for jit code by forcibly disposing
of it after the JIT code has finished executing
auto merge of #6570 : alexcrichton/rust/issue-6511-threadsafe-llvm, r=brson

Closes #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. With this in mind, plus the parallel usage of `rustc`, I re-enabled the `rusti` tests for everything except `x86` (see #6489).

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.