- Disable use of MS ConcRT as it can cause crashes on exit, particularly with the MSVC static debug CRT.
- Changed ThreadPoolExecutor to not use detached threads but instead to join threads where possible on destruction. This is to prevent random crashing on Windows when doing a full exit, e.g. via exit().
- Changed ThreadPoolExecutor to be a ManagedStatic so that it can be shutdown on llvm_shutdown(). Otherwise this could only occur when doing a full exit, e.g. via exit(). This is required to avoid a race condition on Windows between the ThreadPoolExecutor still starting up threads and the process doing a fast exit, e.g. via _exit().