This takes an operation with an iterator of oprands,
and processes the oprands using the operation in a loop,
until the continuation_checker asks it to stop.
The continuation_checker is used to get continuation grants between processing each operation.
The clean_up function is called after the loop is broken and before exit.
The function returns a Progress enum, which indicates the number of operations executed.