Triggers a frame sequence (build/layout/paint/etc), then flushes microtasks.
If duration is set, then advances the clock by that much first. Doing this flushes microtasks.
The supplied EnginePhase is the final phase reached during the pump pass; if not supplied, the whole pass is executed.
See also LiveTestWidgetsFlutterBindingFramePolicy, which affects how
this method works when the test is run with
Future<void> pump([ Duration duration, EnginePhase newPhase = EnginePhase.sendSemanticsUpdate ]);