Data management tools for playing BattleTech

feat(unit-search): filter units with a predicate, the way MegaMek does master

MegaMek has no database. Every unit sits in a MekSummary[] and filtering is a linear predicate scan through RowFilter.include(). At 11k units that costs under a millisecond, so helm-facet is a predicate too - which makes it the conformant reference, lets it run with no database under it, and turns any SQL translation into an optimisation that can be checked against it. The vocabulary is read off MekSearchFilter rather than invented: inclusive ranges with isBetween's quirks (int bounds against a double value, unparseable reads as unbounded), tri-state booleans on its own 0/1/2 codes, and an equipment expression tree whose leaves test each entry separately rather than summing duplicates. A differential test runs predicate and SQL over the whole library and demands the same units back. Eleven query shapes agree across 10,988 units. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>