Unify human-node completion signalling behind an OutcomeSignaler service
Follow-up to #3610065.
Extracts the duplicated "assemble a completed node's outcome variables and signal the token" block from WorkItemManager::complete, UserOperationForm::submitForm, OperationController::signal and OperationResumer::resume into a shared OutcomeSignaler service in orchestra core (resolve() + signal()), with an immutable OutcomeResult::merge() so the outcome contract keeps winning on a key collision. No behavior change; a new kernel test covers the assembly.
Issue: https://www.drupal.org/project/orchestra/issues/3610351