Trial implementation of an async client.join().
Fix a few bugs with `yield from join`.  Start on an event queue.