Add subscriptions, use them for upgrades
Handle multiple responses to a client request
Small refactoring of einhornsh reconnection code
Maintain backwards compatibility for old clients.

If the client sends a request_id we know it supports the new protocol,
otherwise we make sure to only send one response for each request.