Switch from suffix array match-finder to binary tree match-finder
This uses less memory (8 bytes overhead per position vs. 14), is faster,
requires less code (no libdivsufsort), and in some tests actually results
in a better compression ratio.
A binary tree match-finder was used in wimlib v1.5.2 but it didn't seem
as good then, probably because it was combined with a slow block division
algorithm for LZX.
Repeat offsets are now handled differently. The binary tree match-finder
itself doesn't have any logic for repeat offsets at all; instead, the
match-choosing code (now implemented separately for LZX and LZMS) now
does special checks for matches at repeat offsets.
Since less memory is used for match-finding now, increase the default
LZMS pack chunk size from 2^25 (
33554432) to 2^26 (
67108864).