WIP batching rollup reads

Very early WIP, won't compile, not yet ready for review beyond the overall flow of data.

Previously we would make a bunch of SingleRollupReadContexts, and make 1 RollupRunnable per, for performing reads.

This splits the read+calculate into two runnables. First is the pre-read-stage, that gets the necessary metadata to figure out what type of rollup it is and where to read/write the data to/from.

Second is the actual read-stage, this will closely mimic the way we do write batching, but will take into account the fact that each SingleRollupReadContext in a given batch must be identical except for the locator itself. (i.e, same src, dest, range, rollup class, etc)

This second read stage will do the calculation work.