Odoc docs

Make opam integration binary-free for recording and removal master

The post-install/post-remove hooks previously ran `switchdocs record`, so a switch where switchdocs was absent (uninstalled, mid-upgrade, or a global hook firing for a switch that never had it) silently lost the recording. Replace the recorder with plain coreutils: - post-install: `mkdir -p` + `touch <prefix>/odoc/<pkg>/.switchdocs-stale` - post-remove: `rm -rf <prefix>/odoc/<pkg>` - post-session: `switchdocs sync` (the only hook that needs the binary) `sync` now collects its work list by scanning for `.switchdocs-stale` markers (intersected with the installed set), rebuilds those in dependency order — erasing each first (which clears the marker), re-marking on failure so it retries — and regenerates the landing page *every session* (skipping the write when unchanged) so packages deleted by the post-remove hook drop off it without needing a removal marker. Drop the `record` subcommand, the pending file, and the `removed` field of the sync outcome. `Pending` becomes the stale-marker module (`read`/`mark`); `rebuild` marks via `Pending.mark`. Cram test and docs updated; `record.t` removed. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>