Allow session.write to specify an encoding

This is used to specify a (temporary) alternate
encoding, required to send binary files, though
as unicode, in their natural byte value (as iso8859-1)
Implement support of sending files by xmodem/xmodem1k
add xmodem logging to default logger
allow errno.EAGAIN in client.send()

this can happen on OSX as a server, when syncterm as
a client is hung up in a window and not calling read()
handle \xff\xff (IAC+IAC) on recv()
Implement recv_modem() to compliment send_modem()
Speed up engine main() loop

increases upload speed from 3K/s to 150K/s
Merge pull request #137 from jquast/xmodem-support

Xmodem support