Use new libchan interface

Summary of the important changes to libchan:

- Messages are now arbitrary structs, **which can contain channels and byte streams** (libchan.Sender, libchan.Receiver, io.ReadWriteCloser). libchan encodes and decodes them using msgpack.
- Conveniences such as `Ret`, `RetPipe` and `Handler` are gone, so they are implemented in libswarm.