minor improvements for faketime debugging
minor improvements for faketime debugging

When porting a game, you typically have faketime installed on the page but have it playing normally. This commit improves the experience of that setup, and it also makes it easier to switch speeds using the JS console.

This commit fixes a major problem which I call time snowballing. Some games are really inefficient and slow. For these games, the browser cannot run as fast as the game wants it to. Faketime insists on running the game without skipping any animation frames or intervals, meaning that it falls further and further behind. At every setInterval, faketime takes longer than the last setInterval to catch up with scheduled events. Pretty quickly, setInterval handlers start taking 10s of seconds and the game becomes unusable.

Now, faketime.play() allows itself to fall behind and run in slower-than-real-time. Rather than skipping requestAnimationFrames() or timeouts/intervals, faketime will automatically slow down to deal with the inefficient game. This should make debugging MUCH easier for many games, especially on slow computers.

unixpickle/muniverse,unixpickle/muniverse,unixpickle/muniverse,unixpickle/muniverse