Solvers: expand the simulation movement we're modifying in CopyAndPropagate

Instead of expanding one below it that might not have been modified at all.
erp5_simulation: split Delivery_getSolverDecisionList script to make parts reusable
Fix possible AttributeError when using old way of solving divergences

New simulation movements don't have a .divergence_scope attribute, so
movement groups should not assume their presence when checking scope to
adopt a divergence.
When building, edit changes in the right order

The builder was taking a carefully ordered list of movement group nodes and
their suggested changes, and squashing the changes all together in a single
dictionary for .edit(**kw).

Now we calculate the edit_order to take the movement_group order into account.
Refactor AcceptSolver and AdoptSolver
AcceptSolver/AdoptSolver: do not lose information when grouped

A TargetSolver might have its configuration updated multiple times, if the same
solver type was chosen for different divergences (solver_decisions).

We must take care not to overwrite configuration from earlier updates with the
data from later ones.