add Service.register overload allowing to register an object by one of it's sub/super types instead
add support for controlling how fast game updates run at
rework the main loop to use a different method for fixed timestep

Use Glenn Fiedler's "Fix your timestep!" article's approach instead.
Just need to remember to always interpolate between prevState and
currentState and not extrapolate from the currentState when rendering
(for best results!)