Make make_gen a const instance
Rename, move some libuv wrappers into async::
std::move values out of channels
uv_close handles when we're done with them
Bugfix: move fences off queues before unblocking them

Else the fence is destroyed by std::queue::pop(), *while it's still in
the queue*. If swapping to the fence causes the queue itself to be
destroyed, we'd reenter the fence destructor, which would be bad.
This constructor should be explicit
An echo server and just enough socket support for it to work