irmin: address merlint issues
- heap: document public values; drop `val v : (module BACKEND) -> _`
first-class-module constructor, keep only the `Make(B:BACKEND)` functor
- hash: extract err_unknown_algo helper (E340)
- cmd_serve: extract err_unsafe_filename; narrow catch-all to Eio.Io
- tests: add docs to test_helpers.mli / test_store.mli; add irmin_ui.mli;
inline check_bool to avoid double-bool param flag (E350); narrow
catch-all in test_atproto_ext / test_stores to Eio.Io | Sys_error;
extract persist_session_{read,write}, with_pds_path, run_git to flatten
nesting (E010); rename test_sync get/get_ancestors -> find/ancestors
(E325/E331); shorten long identifiers in test_atproto / test_hash /
test_pds_interop (E320); rename atproto-extensions suite to snake_case