fdo#74558: Re-implement BinarySearch() to disregard empty cell blocks.

The old code before the calc core refactoring took advantage of the old
calc storage which did not store empty cells at all.  The new storage does
"store" empty cell blocks, and it did negatively affect the binary search
used for VLOOKUP.  The revised binary search code properly skips empty cell
blocks so that it will work more like the old algorithm in 4.1.

This change also fixes fdo#72348, which was caused by the same root cause.

Change-Id: Ic20cc54d8dae26b62f5e9193cd21dad06ad10a3e
(cherry picked from commit 377d749ff8211fa9e69d47a92810af9bc0652990)
Reviewed-on: https://gerrit.libreoffice.org/8043
Reviewed-by: Norbert Thiebaud <nthiebaud@gmail.com>
Reviewed-by: Andras Timar <andras.timar@collabora.com>
Tested-by: Markus Mohrhard <markus.mohrhard@googlemail.com>
Reviewed-by: Markus Mohrhard <markus.mohrhard@googlemail.com>