Fix timer divergence problem

The problem was that the value shown by the timer diverged from real
time. The reason was that the time was calculated from a counter that
was increased in a timer callback called approximately every second.
Because the timer period is not guaranteed to be precise, the counter
accumulated the small errors resulting in the time shown not to be
precise and diverging over time.

This is fixed by always calculating the time to show by subtracting
current time from the presentation start time. All timer modes (count
up, end time, duration, pre-talk) were checked to work properly after
this change.