Don't try to join() if we are the current thread.

This fixes #354.
Document what is breaking in the client tests.
Document potential brokeness.
Let packetizer handle 0-length sends from channel.

If the channel is closed the send method returs a response length
of 0. This is not handled correctly by the packetizer and puts it
in an infinite loop. (Fixes #156 for real :-)

We make sure we don't do more than 10 iteration on a 0 length respose,
but raise an EOFError.
Add a decorator for checking channel openness.

This decorator will be used in future commits.
Use the new decorator and remove repeated code.