Web frontend and supporting services for lance.blue

test(web): cover the preset groups and the MegaMek camo index master

Two things here fail quietly. The picker marks a tile chosen by comparing its label to the palette's name, so two presets sharing a name light up together and neither is wrong enough to notice. And the camo files come from a script nobody runs on a normal day, so a half-finished run or an upstream rename leaves the index naming files that are not there — which surfaces as a broken thumbnail in a dialog, long after the commit that caused it. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>