[WIP] PEP8 + Other Fixes

This is a pretty big pull request, and still in progress.

- PEP8 everything (agree or disagree?)
- Minor changes to support python 2.7 (`asyncio`)
- Make use of the `@asynchronous` decorator, unsure if this is desired yet... still investigating.

I suggest viewing the diff with `?w=1` on github to make it somewhat readable! I'll also do a rebase and split out the commits once everything is in working order.
I wonder whether we should be doing this as a callback on the event loop? There's a few reasons for that...

- The callback locks up the request handler and event loop so no more requests can be processed (a good thing?)
- If the callback makes a subsequent call to send a message, you can create a deadlock