turbo-tasks-backend: let a GC pass wind down when it is blocking an operation (#96676)
A GC pass holds total operation exclusion, so every invalidation, cell
update and child connect
blocks for its whole duration. In dev that is an HMR edit stalled behind
the cascade, and the pass
had no way to notice or yield.
This makes a gc pass interruptible so we are guaranteed to not stall too
much work. To ensure progress we have a minimum guaranteed execution
time `100ms`