task_server now uses std::condition_variable

It actually makes sense. And the behavior is now defined (I hope).