client: Implement connection handoff
client: Implement connection handoff

Connection handoff allows you to re-instantiate the Client or even restart the process,
without dropping the existing connection to the server or losing messages.
In particular:
	* all messages will be recv'd in exactly one of the two processes
	* recv order is still guarenteed
	* any messages queued to be sent before "sync" point of the final recv'd message in the old process
	  will still be sent.
	* as with normal startup, it is the responsibility of the caller to set up any important handlers
	  before calling start() on the new Client.

ekimekim/girc