[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.
[core] Add computation of statistics for morse_time
[core] Do not mix milliseconds and seconds ...
[core] Add a name for each instance of Time Management
[services] Add a set of service related to time management
[pymorse] Add time management associated request

Add support for pymorse.sleep() and pymorse.time(), with equivalent
semantic to the associated method from module time.
[testing] Remove usage of time module

it is replaced by equivalent call to pymorse method, which deals
properly with the simulated time.
[testing] Allow to pass the unit-test using different time modalities
[core] Move statistics used in time in its own helper file
[time] Rework the time management 'UI'

Add an TimeStrategies 'factory' with several constant defining known
strategies
Use this factory in morse.blender.main
Rename set_fixed_time by more generic set_time_strategy which takes on
element on TimeStrategies in input
Adapt tests to this new interface
[testing] Rework time handling so it tests always all desired strategies