Tracks recent thread activity for the past number of windows.
Each window is 500 milliseconds (configurable).
The actor thread which handles messages is the one pushing events to this struct,
and a debugging thread may pull it to display recent activity.
It is very important that pushing events is as efficient as possible: it should not be
blocked by any debugging threads, and it should not do big allocations except in the
very rare cases.
Writer that can be used to record instrumentation events for a specific
thread. It is associated with a specific actor thread, and maintains a
mapping from message type names. The actor thread will use the mutable
reference to this struct to record events.
Shared part of the instrumentation that is shared between all threads of an
actor. Most importantly, it contains the reference to the queue, which is
shared between all threads. It also contains the clock and reference
instant to compute timestamps.