Customizable game loop

This patch reworks the game loop to allow control over its behavior.  It can now be set to three modes, which control what `dt` is passed to each frame, as well as how often frames are called.  You set these by calling `Crafty.timer.steptype()`

* "fixed", which is the existing behavior.  Each frame processes the same amount of time, and as many frames as necessary are processed to reach the target rate.
* "variable", which processes a single frame per render.  This frame is handed the total time since the last frame, up to some maximum value.
* "semifixed", which takes the total time since the last step, and splits it evenly between as many frames are necessary to avoid exceeding some maximum timestep.

It also cleans up how the game loop and Crafty.timer are actually implemented, moving a bunch of internal variables into the scope of Crafty.timer.

While Crafty *works* with this patch, there are a bunch of components that assume a constant time step per frame.  Animation, tweeing, and multiway are some of them.  I'm almost done with fixes for animation and tween, but figured the base changes should be reviewed separately.

The "fixed" mode should basically replicate the current behavior (with less tolerance for very long visual pauses), but since it's basically reimplemented there might be some subtle mistakes somewhere!