Perl game server for TLE Community

Upgrade server image to Perl 5.40, pin deps with Carton master

Replace the hand-built perl-5.24.0-on-almalinux:8 image with the official perl:5.40-bookworm image. Dependencies now come from a cpanfile + cpanfile.snapshot installed via Carton into ./local, instead of ~110 unpinned `cpanm --notest` lines (image 2.02GB -> 1.42GB). - docker/build-server/Dockerfile: full rewrite. apt system libs for the XS deps; Memcached::libmemcached pre-installed into ./local with a long build timeout (its bundled libmemcached overruns cpanm's default and Carton wipes PERL_CPANM_OPT); groupadd -f (nogroup exists on Debian). - cpanfile / cpanfile.snapshot: new. DBD::mysql pinned to 4.052 (4.x API, old MySQL servers), MailTools 2.21, Memcached::libmemcached 1.001801. - lib/Lacuna/AI/Diablotin.pm: fix a raw 0x90 byte ("Vous <90>tes le bouffon!") that is fatal under `use utf8` on Perl 5.40. - docker-compose.yml: dev DB back to mysql:5.5 to match prod; lacuna-rails service (which needs 5.7) commented out for now. - .dockerignore: new, to keep the build context small. The whole Lacuna:: tree compiles on 5.40 (smartmatch/given/when warn but still work; removal is required before 5.42). App boots and serves; memcached, GD/captcha and DBD::mysql paths verified by hand. The t/ suite is not a gate here - it is already broken on 5.24 because etc-docker/lacuna.conf points server_url (and thus TestHelper) at the production server; 5.40 adds no new failures. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01YM8D7Q9SuhUgP2McJXTn8q