Drop inflected -S forms from the English answer pool
The "drop obvious plurals" heuristic in build-wordlists.ts checked each
singular against allowedSet, which only ever holds 5-letter words. The
singular of a 5-letter plural is shorter (ROOMS -> ROOM), so it could
never match and the filter silently did nothing: 657 of 2500 English
answers (26%) ended in S, with ROOMS landing at index 0.
Extract a pure isInflectedSForm() helper (scripts/plurals.ts) that tests
the singular against the full ENABLE dictionary of every length, covering
regular plurals/3rd-person verbs (ROOMS, WALKS), -es after sibilant/CH/SH
stems (BOXES, ASHES), and Y->IES (FLIES). Rebuild words.en.json: S-ending
answers fall to 53 (2.1%), all genuine non-plurals (CHESS, VIRUS, YIKES).
French is untouched. Adds unit tests for the helper plus regression guards
on the shipped data.