Fix logic on high Windows resolution timer and have
two possible period values for timeBeginPeriod and timeEndPeriod.
Currently while on battery we disable calls to timeBeginPeriod
which make the windows timers have 15ms resolution.
This change makes it so when EnableHighResolutionTimer(true) which
is on AC power the timer is 1ms and EnableHighResolutionTimer(false)
This should provide significant power savings while meeting some
timer resolution requirements needed by the GPU compositor.
But also this CL fixes the following:
EnableHighResolutionTimer() and ActivateHighResolutionTimer() are
pretty broken. This CL fixes most issues:
1- The existing logic fails to account that EnableHighResolutionTimer
can be called while the browser is running
2- All related functions need to be thread safe.
3- ActivateHighResolutionTimer was buggy.