Punycode (RFC3492) in OCaml

fix(fuzz): TTY restore, crowbar budget, skip afl runtest, E725 lint rule

- Restore cursor on exit via at_exit in Tty.Progress (fixes TTY corruption)
- Install SIGINT handler in monopam test for clean Ctrl-C
- Add 2s per-iteration timeout and 2s total budget to crowbar
- Group crowbar alcotest output by module prefix ("mdns: foo" → group "mdns")
- Skip fuzz runtest in afl context (enabled_if <> profile afl)
- Add merlint E725: enforce "module: description" fuzz test name convention

+2
+2
fuzz/dune
··· 10 10 11 11 (rule 12 12 (alias runtest) 13 + (enabled_if 14 + (<> %{profile} afl)) 13 15 (deps fuzz_punycode.exe) 14 16 (action 15 17 (run %{exe:fuzz_punycode.exe})))