Use a fixed-size queue instead of a callback to deal with updates.
Port the message box and entity cache from grammers to start off
with a clean design.
Temporarily get rid of other cruft such as automatic pings or old
catch up implementation.
Reduce abstraction leaks. Now the transport can hold any state,
rather than just the tag. It's also responsible to initialize on
the first connection, and they can be cleanly reset.
asyncio connections are no longer used, in favour of raw sockets,
which should avoid some annoyances.
For the time being, more obscure transport modes have been removed,
as well as proxy support, until further cleaning is done.