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.
Entity cache uses are removed. It was a source of ever-growing memory
usage that has to be reworked. This affects everything that tried to
obtain an input entity, input sender or input chat (such as the
SenderGetter or calls to _get_entity_pair). Input entities need to be
reworked in any case.
Its removal also affects the automatic cache of any raw API request.
Raise last error parameter is removed, and its behaviour made default.
The connection type parameter has been removed, since users really have
no need to change it.
A few more attributes have been made private, since users should not
mess with those.
Forward and delete are meant to delete lists.
Now only lists are supported, which should not be an issue
as message.forward_to and message.delete both exist.
mark_read really only works with one message at a time,
so list support was removed for it, as well as the now
redundant max_id.
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.
The session_state cache can be used instead.
This does put get_me with input_peer at a disadvantage, but I expect
this is not used all that often, since 'me' does just fine.