Complete message write to socket when socket cannot accept all bytes.

fwrite to a socket may not write all the requested bytes, so keep sending
remaining bytes until done. Wait for the socket to be ready for writing
between each attempt using the default send timeout value.

The library as it is currently written will fail if message sizes exceed the
allowed maximum SO_SNDBUF for the host system, or when there is 
significant network congestion between the client and the server.

The fix has been used to consistently transfer 1 MBytes plus messages
across a North American transcontinental connection succesfully. Please
feel free to contact me if you need any more information! We really need
this fixed :)