Rework scheduler internals
Now that we have asyncio instead of simpy, we should consider reworking some of the scheduler internals: - Maybe use an `asyncio.Queue` for the next steps of a simulator instead of `heapq` and the `has_next_step` event. - Find a way to remove cancelling the task when interrupting due to earlier steps. - Maybe get rid of `check_and_resolve_deadlocks`, `NoStepException` and `SimRunner.started`. The following discussion from !98 should be addressed: - [ ] @aofenloch started a [discussion](https://gitlab.com/mosaik/mosaik/-/merge_requests/98#note_1325532091): > Open TODO: There might be a more elegant way of doing this instead of setting has_next_step without actually providing a new step. (Currently, the missing step is checked for in the has_next_step coroutine and a WakeUpException is raised there.)
issue