Group sorted, deduplicated, owned missing block indices into maximal
contiguous runs, splitting any run whose byte span would exceed
max_coalesced_get_bytes at block boundaries. Each returned block-index
range becomes one origin.get_range call.
Largest byte span one coalesce_runs run may cover: max_coalesced_get_bytes
rounded down to a whole number of blocks (at least one). Shared by
coalesce_runs below and the fetch-budget reservation/assertion math in
range_cache/mod.rs and range_cache/scheduler.rs, so every one of them
agrees on what the largest possible run is.