[time] Emit timeChanged when the display state changes

update() will trigger the timer update, but won't actually fire timeChanged,
which means that time updates still won't come in as needed.

Adapted from a patch of @rburchell's. This doesn't entirely solve the problems: there is still a flicker of the wrong time before the update.