subprocessSpawnFailure() now converts only errors that carry a string
errno code and returns every other value unchanged, so an internal
failure such as a dropped collect stream is no longer reported as
cannot start / SUBPROCESS_SPAWN_FAILED. The bash and pwsh tools pass a
rejection through unchanged only when it is the call's own
cancellation reason; a spawn error that settles after the call was
cancelled is still classified. The job starter reads the failure
through an optional hooks binding instead of a definite-assignment
assertion.
Refs #7869