* Fixes the totally broken UserInfo resolution in guilds.
* Adds support for USER_UPDATE from the gateway.
Design considerations behind the user cache:
* Explicitly handle deleted user IDs by short circuiting the lookup
logic and returning a singleton.
* The cache map is protected during HTTP requests to the Discord API.
* The nonexistence of a user is cached. This is to prevent excessive
requests (a user can't suddenly begin existing at a given ID).
The user cache is upserted on READY, incoming messages, backfill, etc.
In the same vein as mautrix-whatsapp, -slack and others, do not make
assumptions about how the ID is represented in the connector code. Let
the discordid package be entirely responsible.