rice: revert to exhaustive k scan — interop test requires libaec parity
Commit c680a7407 switched [best_split_k] to use the [select_k]
heuristic (floor(log2(mean))), reasoning that this is what Rice
coding normally does per CCSDS 121.0-B-3. That's mathematically
true but practically wrong for this library:
libaec (our CCSDS 121 reference oracle in test/interop/libaec/)
implements its own [best_split_k] via an exhaustive scan with a
first-found-wins tiebreak. On tie blocks — inputs where multiple k
values produce the same total bit length, e.g. an 8-bit uniform
ramp of 16 samples where k=2 and k=3 both yield 72 bits — libaec
picks whichever k comes first in [0..kmax]. The heuristic picks
floor(log2(mean)), which disagrees on those ties.
The interop test [compress] case [ramp_bs16_bps8] fails byte-for-
byte after the heuristic switch, emitting a 1-bit-shifted output
that phase-propagates through the entire stream. Interop-exact
match against libaec is non-negotiable for a reference-aligned
library.
Restore the exhaustive scan and keep [select_k]'s reasoning as a
comment so the next maintainer knows why we search instead of
computing. [select_k] itself is deleted (no callers).
Test result:
interop/libaec: 8/8 pass (compress + decompress × 4 vectors)
fuzz: 6/6 pass