Port away from pw_thread_loop
I noticed it was getting stuck when a stream was started. I'd seen thread loop break quite a bit when working on KWin's implementation and it's not a very busy loop anyway. It makes the development easier too, as we don't need to do the whole emitting and un/locking business.