This MR fixes seek in VRChat by copying the sequence of flushes/stop/starts that Windows does.
The order on Windows is: 1. Stop sources; 2. Flush MFTs; 3. Start sources; 4. Request output down the chain of sink inputs; 6. Flush sinks; and 7. Start the clock
This takes place whether we pause before we seek or seek without pause.
Changes in version 2: 1. Add test to see when SAR requests new samples; 2. Add test to examine when step 4 from above takes place; 3. Adjust the seek implementation in `mf/session.c` to match findings from the new tests 4. Adjust `mfmediaengine` to reflect findings from the new tests
-- v2: mfmediaengine: Request sample if we are seeking. mfmediaengine: Don't perform implicit flush on state change. mf: Don't send MFT_MESSAGE_NOTIFY_START_OF_STREAM when seeking. mf: Restart transforms and sinks on seek. mf/tests: Test sequence of calls during a Pause and Seek. mf/tests: Test when SAR requests a new sample.