Major architectural change to the client - the receive is now callback-based rather than polled, and data is immediately sent out when it returns (and also when data is queued by, for example, stdin's callback).
Updated the 'tcp' driver with the new code, so it once again works