SF: avoid updating queue if schedule() is called.

Avoids a rarish race condition where a callback is scheduled in the
interim time between the TimerDispatch starting to run and the callback
for that scheduled callback is invoked. In this condition, the code will
now have the next callback pend until the timer queue processes the when
to wakeup next.

Bug: 154303580
Test: 3 new unit tests
Test: boot to home, check some animations
Test: overnight dogfood with patch.

Change-Id: I0e7e2e3698ed6d1765082db20d9cf25f6e6c2db2
3 files changed