Update to os::Timer behavior in 2.7

We're having issues in a cleanup phase of the os::Timer class since
killing a timer (killTimer) does not wait for timeout() to return. So
the timer you're killing might still be executing when killTimer
returns, causing trouble furtheron when accessing/cleaning up

The solution is to make all these functions synchronise with timeout,
but still allow to modify the timer from within timeout() by using a
recursive mutex.


Alternative would be to not modify Timer.cpp and to guard the timeout
+ cleanup in user code with a mutex.

Any remarks ?