`APlayer` and `ATrader` represented player and trader (`ShopVolume`)
with a single object instance. Such design, if used for all actors,
could have led to mutitute of problems rooted in need to find that
single object for any given native actor: we'd need to store
object-actor pairs separately and look through pairs lists, which is
hardly a sane design.
Now Acedia switches to a different design, where a single in-game entity
(i.e. actor) can have several interfaces referring to it. All equaly
valid. Refactoring `APlayer` and `ATrader` into `EPlayer` and `ETrader`
is a first step in that direction.
I shamefully ended up doing another mega-commit, because a lot of things
needed to be redone at once and it was easier that way on me. No one
really consistently tracks what I'm doing with these commits anyway.
This adds a whole bunch of code to deal with proper clean up for Acedia,
so it doesn't crash on map change and also replaces old event/listener
system with new signals/slots one.
Refactors `User` to simply store persistent data, while making `APlayer`
represent a connecte playr with appropriate links to `User` and (in
future) his in-game pawn representation.
`GetActiveConnections()` by default returns all connections currently
recorded in `ConnectionService`, which might include broken player
connections, if player disconnected recently and it still was not
properly handled.
Optional parameter was added to clean connections before returning them,
which might cause a change in state of `ConnectionService`.
When `ConnectionService` was before killed and respawned it would cause
a new connection events for every online player, regardless of whether
they were generated before.
Now list of registered players is also saved in default variables for
`ConnectionService` and quick restart will not cause any issues.