Add an async version of the SE chat wrapper.

This version does not block on send. This gives future room for
expansion and monitoring (e.g. shoot an email if the message queue
gets too long.)

As a result of this change, the non-async wrapper interface also
changes and clients must call .logout() on exit. This call allows the
sending thread to exit cleanly while still blocking on an empty queue.
Async wrapper: add logging

Threads aren't fun without logging. Log all the things!