monopam: nested mono = true now pushes inner subtrees all the way out
When a sources.toml entry is marked [mono = true], monopam treats it
as a nested monorepo with its own sources.toml and recurses in
depth-first. Two bugs were preventing the nested push from actually
reaching upstream:
1. [Fpath.(monorepo / nested_prefix)] crashed with "invalid
segment" because nested_prefix is slash-separated ("open-mono/lib")
and Fpath.(/) calls add_seg which rejects strings containing "/".
Build the Fpath component-by-component instead. Same fix in
pull.ml's merge_inner_subtree.
2. mono_entries would split the outer monorepo and push the result
to the inner CHECKOUT under src/, but nothing ever pushed that
checkout to its remote. The user's edits landed in the local
cache and stopped there. inner_subtree now runs a second
push_remote step after the split so the change actually leaves
the machine.
Test: monopam/test/nested_mono.t exercises product (outer) → open-mono
(inner, mono = true) → lib.git (upstream). A fix applied inside
product/open-mono/lib propagates all the way out to lib.git in a
single [monopam push lib] invocation.
Known gap (documented in the test header): the README's full three-
layer story also wants an intermediate push to open-mono.git itself
between product and lib.git. The current implementation skips that
middle layer and recurses directly from product to lib.git.