Re-implement threading with C++11, not OpenMP

* Compile with C++11
* Refactor runChains method
* Use std::threads instead of OpenMP
* CMake: Remove OpenMP dependency and tidy up