Avoid network on the main thread in all cases

Instead of special handling of cases where we are on the main thread,
the default send method now makes sure not to perform network operations
on the main thread.

A new method is introduced, sendCommandImmediately(), which can be used
when we are not on the main thread.  All read operations are performed
by the listening thread, so those cases were already covered.

Additionally the send process and asynchronous handling are now
documented.