msg/Dispatcher: simplify and optimize the `marrival` tree
This replaces the two containers `marrival` and `marrival_map` which
needs lookups with one single `std::multiset` and eliminates all
lookups completely; only `add_arrival()` ever needs to walk the tree.
To do that, an iterator field is added to `class QueueItem` which is
later used to erase the `std::multiset` item.
This is not only simpler and faster, but also smaller: the resulting
binary is 2.5 kB smaller.
Signed-off-by: Max Kellermann <max.kellermann@ionos.com>