Get rid of bare except:s
Add six version requirement

six.add_metaclass isn't available in all versions of six.
Allow AttributeError when updating NET_WM_DESKTOPS
fix pango markup parsing/rendering
Don't crash on widget errors

We could return "" here, but it seems more useful to let users know that a
particular widget is having problems. We can change this to "" if it becomes
more of an issue. Whatever we do, we can't return None, because we immediately
try to parse None for pango markup and fail.
Add requirements.txt
Setup testing and installation for asyncio event loop
Asyncio based IPC client/server protocols
Use asyncio/trollius for event loop
Improve tick()'ing

Allows `.tick()` to return values which determine if and when they are
re-ticked:
* Returning `None` will use re-call after `.update_interval`
* Returning a value will re-call after that value
* Returning `False` will not re-call

Also use `.call_soon_threadsafe()` in a couple places.
Add note on asyncio/trollius importing
Drop ._loop() call from call()
Add pypy support!!!!!
Change sleeps to spinlocks so they don't die...
Don't leak additional timeouts on reconfiguring
Fix prompt cursor blinking
bar shouldn't listen for any hooks

Since the bar doesn't actually do any drawing itself, there is no need for it
to listen to any hooks. Any widgets that need to listen to these hooks should
be explicit about it and do it themselves.
Always use the bar's draw queue

There was no way for users to set this, and it is the Right Thing to do anyway.
Use proxy calls for the event loop

When cairo (or pango, or whatever) draws stuff to an XCB surface, those events
go in xcb's outbound queue. These events are not actually sent to the server
until the connection is flushed (xcb does this as a performance optimization).
Previously, we flushed after each event-loop event (including our own
callbacks), but now we flush only after each XCB event (asyncio's run_forever()
vs. gobject's iteration()).

Thus, if we generate some drawing events (in particular, if widgets generate
drawing events), those events must be flushed to the server in order for people
to actually see them. This commit adds proxies for the event loop which wrap
the callbacks so that after they're done, the xcb queue is flushed to the
server.

This commit also removes Qtile._exit, which is no longer needed as we can just
use asyncio's stop() directly.
Remove mpris widget update timer

This isn't necessary and causes a crash with the new event loop structure.