[core] Rework time handling

Introduce two modes to handling time.

The classic one is 'best effort', i.e try to reach the desired fps, but
staying in real-time (i.e. one simulated seconds is one computer
second). To do that, the simulator may drop frames. The physical step
will jitter.

The fixed time mode computes all the frame, which may be slower (or
sometimes faster) than real-time. All physical steps are the same, which
must help the repeatibility of experiments.

This commit address part of issue #388.