I've added a `CloseConnection()` method which we can use to kill the underlying `net.Conn` forcing a reconnect (we already do this in `Lock` though didn't previously expose it). So I think we have two choices:

 * Panic. _I'm not keen on this..._ I don't think the library should ever actually panic, though without understanding more about ZK I'm not sure how _critical_ this error is?
 * `CloseConnection()` which will kill the network connection to Zookeeper, causing the send and recv channels to exit, and all existing requests to be flushed. We would then reconnect, call `authenticate()` and get back to here, so we could recover, or we could end up in a pretty tight connection loop. Could add a delay before doing this I guess?