Replacing boost functionality with C++11 stuff.
Motivated by #18227, but should stand alone. Changing from boost::condition_var to std::condition_var means threadGroup.interrupt_all isn’t enough to interrupt serviceQueue anymore, so that means calling stop() before join_all() is needed. And the existing reverselock.h code doesn’t work with sync.h’s DebugLock code (because the reversed lock won’t be removed from g_lockstack which then leads to incorrect potential deadlock warnings), so I’ve replaced that with a dedicated class and macro that’s aware of our debug lock behaviour.