[#170] use `requestAnimationFrame` as default implementation for the game loop

* will fallback to `setTimeout` if not supported
* also uses `Date.now()` instead of `Date.getTime()`