Draft: Wire step-runner job cancellation through the build

What does this MR do?

Wire step-runner job cancellation through the build

Split steps.Execute into Prepare/Run/Cancel/Close so the build can hold a cancel handle for the running job, and plumb it through trace.SetCancelFunc in common/build.go. On the concrete runner side, forward JobCtrl cancellation into runner.Cancel, and give env.Command its own process group with a WaitDelay fallback so a killed child cannot stall cmd.Run on pipe EOF.

Why was this MR needed?

What's the best way to test this MR?

What are the relevant issue numbers?

Merge request reports

Loading