Add a version of MPI_InitFinalize that adaptively determines the number of threads

Add an option to MPI_InitFinalize to choose the number of threads adaptively in such a way that all cores are used.
It tells the TBB to create one worker thread per core. Of course, if you spawn additional threads by hand in your code, there may be more threads.

So is your comment that the enum is poorly named, or that the code is actively wrong?