Removing TestConnection, Starting fixes for AsyncServiceClient

Fixes #13 .  This totally removes the crappy TestConnection I wrote a while ago that uses blocking sockets, and now just uses an AsyncServiceClient.  Some tests are still ignored because of #19 , and the test referenced in #4 just needs to be redone.
There are two separate but related problems.  The first problem was that the AsyncServiceClient was replicating logic that's already in the connection handler, part of this was the fact it was stashing messages when it thought it was not connected, but really the service client should be doing all of this.

The second issue, which this PR only half-fixes (as the other half will be more invasive) is that during the time in which a client connection is re-connecting, it is no longer bound to the worker, so if someone attempts to send a command to it, the message will be lost.