New logic for Workeritems, fixing lots of tests

This introduces a fairly low-level change about how connection handlers interact with workers.  Previously, we tracked active connections attached to a worker, but not the handlers attached to connections.   This became an issue with ServiceClients, which can automatically reconnect if unexpectedly disconnected.  During the time in which the client was reconnecting, it was not at all bound to the worker, so if someone tried to send a message to the client handler (such as with the `AsyncServiceClient`), the message would be lost.

Now we have a clear distinction between tracking connections and connection handlers, such that a connection handler can detach and re-attach to connections without becoming unbound from the worker.  In particular a client connection handler can now control when it becomes unbound from a worker (server handlers are still always onbound when their attached connection is closed).

Also fixed a whole bunch of tests, including all the tests that have been randomly failing in travis.
haha.  That's such a simpler way of testing this :).  Are we sure that "active" connections aren't getting reaped in this case?   I mean, we both KNOW it works, but from a testing point of view, can we verify that an active connection is still alive after the other ones are reaped?