Fixed issue with Timer.stop().
  Timer.start() would add the timer to the active list.
  Timer.stop() would just clear the running state (but the timer would
still be in the active list).
  Over time, if start() and stop() were called multiple times, the timer
would be added and advanced multiple times on a given frame (with the
exact same time).

  Took the opportunity to make the add / remove timer sequence more
robust in case of multiple start / stop sequences on the same frame.