Multi agent

This allows a single cockpit-agent to handle mulitple channels. It's especially relevant to the docker work since any non-keepalive HTTP connections (or concurrent connections) cause a new channel.