cli `squash`: new `--restore-descendants` option
This option is already implemented for `abandon`, `restore`, `diffedit`.
Includes [GHC-style note] explaining why a single option for restoring *both*
source and target descendants is sufficient and simplest to understand in corner
cases. Currently, this note is only relevant to `squash.rs`, but it
would also be referenced in `jj rebase` and `jj duplicate` once those
gain `--restore-descendants`.
[GHC-style note]: https://gitlab.haskell.org/ghc/ghc/-/wikis/commentary/coding-style#2-using-notes
Fixes #6000