Remove all this peeking crap, as we won't need it.
Remove the test for the peek queue.
The big refactor of the connection handler to use a single ZK thread.

Uses a deque and pipe to signal the ZK thread that there's a new command to send, so that the ZK thread can send it, or retrieve a response.
Processing ZK requests and responses serially in a single thread eliminates the need for a bunch of the locking, and two threads working on the same underlying socket.
There's still an intermittent test failure or two, probably related to the complete removal of the state lock which will need some slight re-ordering to remedy.
Remove some remaining peek tests.
Change the timeouts from microseconds to seconds before using them as timeouts.
Skip read timeout test right now, as it replaces select all over, which no longer works since we use select in the main zk loop.
We took a request, read the pipe.
Send request isn't responsible for triggering close.
Account for timing issues which may result in a reconnection before the session is expired.
Python 3 is not so much a fan of writing a str to a pipe buffer.
Remove a test ambiguity relying on Python ordering of commands.
More ambiguities relying on not being able to acquire fast enough for the test case.
More test ordering to ensure a speedy client doesn't muck up the results.
Proper debug statement.
These aren't run anyways, so we comment them out.
Kill the ZK server in a way thats more agreeable with PyPy.
Do a better test on the partitioner state a failure at least indicates the current state.
Restore the old way of cluster restarting.
Remove pypy from testing for the moment.
reduce branch diff