A few improvements

* Makes PEP8 and pylint happier
 * Moar whitespace
 * Less unused imports
* Retries on failure
* Waits between messages
* Tries to anger the rate limiter as little as possible
* Added (and focused) on an async version
* *(api incompatibility)* Clients should do a `logout()` after a `login()` so the async client knows when the message sending thread can shut down the program.