tick pause fix

Introduce optional during_pause parameter to TickManager.register().  This
allows ticks to continue to be called even when the game is paused.  At the
moment, only InputManager and WindowManager use this.  This replaces the
previous hard-coded special cases in TickManager for those two.

Further, refactor TickManager code to reduce code duplication.
 - refactor tick() to tick(), __call_callback(), and _get_delay()
 - add small amounts of documentation to functions