channel: convert to JSON before handling auth

Also, document a bit better the different steps we use to implement the
protocol. Next step is to implement the heartbeat protocol.