* In theory we would always see `Fileheader` and clear `pending[]`, but let's
be extra paranoid and also clear it if there's a gameversion/build difference
between the prior event and the current one.
1. Due to the _TIMEOUT on the actual `post()` of a message it would be
possible for new entries to get queued in the meantime. These queued
entries could be 'in session' and end up going through pending and thus
sent before one of the 'new session' events is detected so as to clear
pending. The `this.gameversion/build` could have changed in the meantime,
so are no longer correct if game client changed.
2. So, pass in the current gameversion/build when a message is pushed into
the queue, and parse those back out when they're pulled out of the queue.
3. Use those versions in the message, not `this.` versions.
* Record the 'state' version of these in `this`.
* Use those when constructing the message.
* NB: Need to check if messages can be retained in the queue across client
changes. Coming up ....
* Ensure we have the discarded_events list *before* starting to consume
events. There's the *same* risk as before with EDSM just being down
and us queueing up more and more, just now it will be in the worker
queue rather than pending.
* We need to test for some events in should_send() that are in the
discard list, and thus will never be in the `entries` (pending) passwd
in, so pass in the name of the latest event as well.
* trace-on 'edsm-cmdr-events' for how Commanders, their API keys and
using them are handled. See #1134
* trace-on 'edsm-locations' for what was commented-out logging to do
with ensuring code reacted correctly to any change of system.
* mypy/types-* seem to have had changes causing extra carping, so
addressing that.
The 'if not this.station' was early paranoia when first getting things
working with Odyssey. It prevents a relog from Horizons (i.e. different
location) from correctly picking up an Odyssey login station when
on-foot in concourse.
Also, EDSM was defaulting wrongly for this.station_marketid. Not that
the plugin even *uses* that at this time.
* A lot of this is commented out. It might be useful in the future, but
is just too noisy for now.
* Changed the protocol webserver to info, as it is.
* Left the EDSM 'not 1XX, 2XX or 5XX' in as it's a warning, so 'pass's
on the conditional bodies that would be empty now trace's are
commented.