Time frames based on current, not last timestep.

We need to decide the nextFrameTime when we know how many vblanks it took,
not before.  Otherwise, we will miss-time when the fps changes.
Avoid a fast-forward effect when not drawing.

This fixes loading screens and such, which drop the fps down to 0 or 6
according to our measure, which can distort audio if we've got free time.

If the system is not keeping up, should have the same behavior as before.
Merge pull request #6433 from unknownbrackets/frame-timing

Maintain timing of at least 30 vblanks per second if possible