Issue #3622714: Bind the entity to the run the caller started, and refuse a binding that cannot hold
Binds the entity from inside the start rather than after it.
Under the shipped default execution mode the engine drains the run inline before start() returns, so attaching afterwards binds an entity to a run that has already executed every node up to its first wait, and those nodes are the ones that read the attachment.
startForEntity() now registers a one-shot listener on InstanceStartedEvent, which the engine dispatches inside the start transaction, before the start token is placed. That is the seam the event documents itself for. The listener takes the first event and then stands down, so a synchronous subprocess started during the drain is not bound instead, and it is guarded on having bound nothing yet so that does not rest on the removal having worked.
The test is ActionTaskTest::testAttachedEntityIsBoundBeforeTheRunAdvances: the same shape as the neighbouring attached-entity test, but under the shipped execution mode rather than the queued one this class otherwise pins. It was confirmed to fail against unpatched 1.x (the entity is never touched, the payload variable reads failure, and the run completes) and to pass with the change.