irmin: split main.ml into per-subcommand files (E524)
Move each Cmd.v subcommand out of bin/main.ml into the matching
cmd_<name>.ml, which now exposes a `val cmd : unit Cmd.t`. Shared
Cmdliner terms (setup/repo/branch/output/message) live in a new
bin/terms.ml. main.ml is reduced to the top-level Cmd.group.
Also refactor long functions (E005):
- cmd_serve.admin_page: extract admin_identity_rows, admin_allow_rows,
admin_branch_rows, admin_denied_response, admin_allowed_response
- cmd_serve.upload: extract check_upload_auth, files_of_parts,
target_dir_of_parts, find_invalid_filename, apply_upload_files,
commit_upload
- cmd_tree.run: extract list_entries, print_leaf, print_node, walk,
start_path, resolve_start
- ui/drop_zone.v: extract label_tw, submit_on_change, file_input,
prompt constants