Allow time travel in integration tests
This branch adds a TimeTravel interface that integration tests can use to simulate the passage of time. Changes affect the Clock and the TaskScheduler. The default Clock and TaskScheduler implementation are used unless a test asks for time travel via the TimeTravelModule(boolean) constructor.
Part of #1833 (closed)