Fix bug with negative time steps.
Fix bug with negative time steps.

Cause of bug: I was getting the initial time from `performance.now()`,
and later times from `requestAnimationFrame`.  Unfortunately, browsers
have recently fuzzed the results of `performance.now()` to mitigate
Spectre and similar attacks.  As a result, it's common that rAF returns
an earlier time in the first frame than that initial time, and this
generates a negative time delta.

I added to fixes:

1. Get game times from rAF instead of `performance.now()`.  This
sometimes means waiting for a new animation frame before drawing,
but this is okay!  It only affects startup time (which I don't care
about), or cases where the old code used to draw to the screen
outside of rAF.  Those should have been fixed anyway.

2. Also, just stop firing time step events unless the time delta is
positive.  This will catch any remaining cases where, for whatever
reason, we might end up with more than one time event in a single
frame.  (Due to the first fix, those would yield 0 instead of a
negative number, but there is still no point firing a zero time delta.)

Fixes #1051

google/codeworld,alphalambda/codeworld,alphalambda/codeworld,alphalambda/codeworld,google/codeworld,google/codeworld