irmin: add clone, restore export, tighten import; consistent CAR UX
Four commands covering the {file, remote} x {in, out} matrix:
import FILE file -> store (ingest)
export FILE store -> file (archive)
pull REMOTE store -> store (sync, fetch + merge)
push REMOTE store -> store (sync, fast-forward)
clone SOURCE [DIR] one-shot "init + import + set_head"
All take positional arguments (previously export used -o; now aligned
with import and the rest). CAR support targets the PDS backend today;
Git-backed stores get a clear "use git bundle" error, not a silent
stub.
cmd_import: dropped the half-implemented "plain file" path — use
[set] for single-file ingest. Import is CAR-only, errors clearly on
other extensions.
cmd_export: new implementation on top of [Pds.export_car]. Empty
store or unsupported backend surface a dedicated err_* helper; no
placeholder behaviour.
cmd_clone: new. Reads a CAR snapshot, initialises a PDS store at the
target directory (default: CAR basename minus [.car]), writes every
block, binds HEAD to the first root CID. Refuses to overwrite an
existing non-empty directory, matching git clone.
README: documents the 2x2 import/export/pull/push matrix and the
clone shortcut.
main.ml: Cmd.group now lists Cmd_clone.cmd and Cmd_export.cmd
alongside the rest.