Initialize threading support properly with MPI2

I haven't tested this with MPI1 yet.

With MPI2, apparently "MPI_Init" is shorthand for "MPI_Init_thread(...MPI_THREAD_SINGLE...)" which is a way to tell the MPI stack that it should feel free to use optimizations like non-threadsafe-malloc which can trash a threaded code.  I haven't actually seen any *incorrect* output due to this bug yet, but we've seen some suboptimal performance that might relate to CPU pinning tricks mvapich2 plays when it thinks it's running single-threaded.