recover reference bases from MD tag and CIGAR
approximate amount of memory that each pileup will consume, given in bytes. (Usually consumption will be a bit higher.)
position of the first column of the first chunk
position after the last column of the last chunk
WARNING: block size should be big enough so that every block will share
some reads only with adjacent blocks.
As such, it is not recommended to reduce the block_size.
But there might be a need to increase it in case of very high coverage.
This function constructs range of non-overlapping consecutive pileups from a range of reads so that these pileups can be processed in parallel.
It's allowed to pass ranges of sorted reads with different ref. IDs, they won't get mixed in any chunk.