Fix in response to SeattleTestbed/repy_v2#87

This makes it so that trying to receive zero bytes (corresponding to
the free space in a full buffer) doesn't fail with RepyArgumentError.
Work around a possible KeyError in tcp_relay's registered_server dict.

It can happen that a server (i.e. host using a TCP relay to listen on
its behalf) is unregistered while a server connection request is being
handled, e.g. in line 340 of `tcp_relay.r2py`. With the dict entry
removed, the function processing the conn request previously lost
access to the `client_lock` stored in the server's dict entry,
resulting in the KeyError.

The bug behind this problem is that the unregister function uses
its own lock, not the server's `client_lock`, to serialize accesses
to the dict of registered servers. This needs further investigation.
Corrected error message.

It's not always the client's fault when the connection is closed.
Store reference to function, not result of function call.