We need to support non-square blocks, the overall trick in this branch is to keep only one of the galleries being compared in memory (the other is read incrementally).
This saves a lot of memory use when the galleries get large, particularly when processWrapper is in use (since if we are using multiple processes to do the comparisons, they all need a copy of the gallery they are comparing against in memory).
If we have non-square blocks, then a single Globals->blockSize is insufficient. We would need at least two global variables to describe the ideal block size. Also, the ideal block size depends on the size of the gallery being compared (i.e. in this branch we are using 1 row, by n cols, if processing in row major order, or n cols by 100 rows in processing col-major order), so having a single global block size is incoherent.

We currently don't really support doing more than one br_compare concurrently, but there is no inherent reason for that to be the case, there are only a few remaining unsafe uses of global state, and IMO getting read of these things is desirable.