Replace Tulip's DataBuffer with a simple Queue.

This also lifts the constraints that only one coroutine can read from a
given websocket at a time. It is now legal for multiple coroutines to
call recv() in parallel (even though it looks like a bad idea).

There's yet another API change for waiting until a connection
terminates: yield from ws.worker instead of ws.close_waiter.