this can be used to find places where we use more time than expected. It works similarly to WITH_SEMAPHORE()
this prevents nesting errors in use of EXPECT_DELAY(), ensuring we always close the expected delay
This allows us to move a lot of delay handling from vehicle classes into HAL Scheduler. The most notable improvement is that it moves the detection of recursion into the Scheduler, out of each separate vehicle.