Implement a simplified fiber work loop that processes units of work
cooperatively. Each fiber: { id, work: number }. Process them in order,
yielding to allow priority interrupts.
solve(initial, interrupts) processes initial fibers; after each step
the scheduler checks for new interrupts { atStep, fibers } to add to the
front of the queue. Returns the order fibers completed.
Sample tests