When streamEntireDataset() runs background erasure decoding while client streams blocks,
erasure early exit was cancelling downloads that the streaming client still needed,
causing CancelledError failures.
Add allowEarlyExit parameter to erasure.decode() and disable it during streaming.
This makes the background erasure job act as a prefetching helper rather than
competing with client reads for the same blocks.
The early exit optimization is less valuable during streaming since the client
typically needs most blocks anyway, and cooperative prefetching provides better
user experience than download cancellation conflicts.