Make tasks cancellable inside the blink scheduler.
The complexity of WorkQueue got a bit worse O(log n) insert & pop
but this seems unlikely to matter in prartice because the queues
never really get big enough for this to matter.
Follow on patches will enable Timer<> to use the new style of
cancellation which result in smaller queues. Note the cost of
running a NOP task is currently quite high so overall we should
get a net benefit once Blink tasks use the new API even if this
patch adds extra overhead.
BUG=
638542,
605718
Committed:
https://crrev.com/098f0e5e5786dbccfe2aef2d9b8319dc92798b99
Cr-Commit-Position: refs/heads/master@{#413120}