YieldAllAlarms revisited

The initial problem with this was that running the game at a higher speed would make yielding alarms pile up and run later then they should, so I added a callback for when the speed changes, although that approach would set alarms that are supposed to yield to "not yielding".

This last change goes back to the root of the problem and it skips repeating alarms. It's actually a step back but for a good cause, since it avoids problems