Pack language profiles into shared string table with flat int array
Reduces binary size by ~75% (115MB → 28MB static library) by:
- Using a shared string table for all 172K unique n-grams
- Storing profile data as a single flat int array (662K elements)
- Using offset-based access with (lang_code, start_idx, num_pairs)
This format is compatible with WASM/js_of_ocaml (31-bit safe ints)
and eliminates duplication across 47 language profiles.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>