Fix the problem with the missing first event

We were missing the first event (and potentially every first send after quiescence) due to the way we handled dispatching messages when the system was not already running. This change removes that limitations: schedulers are now responsible for detecting that the system is not dispatching when a message is enqueued, but in exchange it simplifies a bunch of things and recording.