Issue #3613300: Move the workflow variable providers to Orchestra's VariableProvider plugin type
Consumes the plugin type added in orchestra #3613299. The local seam goes away and the rules become Orchestra plugins a model selects.
Removed
WorkflowVariableProviderInterface, WorkflowVariableProducer, the yoyaku_orchestra.workflow_variable_provider tag with its five tagged service definitions, and the yoyaku_prepare_workflow_variables action. yoyaku_payment_orchestra.services.yml held only the deposit provider, so the file is gone too.
Added
YoyakuVariableProviderBase: resolves the run's order from the instance's yoyaku_transaction_id variable and hands it to the subclass, so each provider stays just the rule it owns. A run with no resolvable order contributes nothing rather than failing, since there is no value to compute and the flows gated on those variables take their "not applicable" branch.
The five providers become plugins under Plugin/VariableProvider, keeping their bodies and losing the redundant suffix: Arrival, AutoConfirm, Settlement (yoyaku_orchestra), Cancellation (yoyaku_orchestra_order), Deposit (yoyaku_payment_orchestra). Each declares the variables it writes, so the editor shows what selecting it contributes. variablesFor() stays public: it is the rule stated against an order, usable and testable without standing up an instance.
Model
The shipped yoyaku_booking model retypes n_prepare_variables from an action node to a variables node, in both the structured config and the BPMN source, selecting all five providers in the order they ran before. Pre-1.0, so no update hook: an existing site patches its active config by hand.
Consequences
Installing a submodule no longer contributes its variable on its own, the node has to list the provider. The model already contained the fork reading the variable, so it was always coupled to that submodule; now the workflow config records it.
Tests
WorkflowVariableProducerTest becomes VariableProviderTest and drives the real path, a variables node running the selection and writing to the instance, rather than calling a producer service. Six tests: the three settlement cases, a node gathering providers from two submodules, a provider left unselected contributing nothing (the behavior the move buys, which the old seam could not express), and a run with no order writing nothing instead of failing. Two existing tests that fetched providers as services now resolve them through the plugin manager.
Also fixes a phpstan hit in the moved Arrival: the slot start goes through BookingSlotInterface::getStart() behind an instanceof, instead of ->get('start')->value on a generic entity.
Verified locally: the whole yoyaku kernel suite (19 directories), phpcbf, phpcs at --warning-severity=1, phpstan (no new errors) and cspell.