gitlab-runner: Add suspend/resume foundation and Instance executor support
Add the suspend/resume foundation to the runner and implement it for the Instance (autoscaler) executor:
- `SuspendableExecutor` interface with `Suspend(ctx) (url.Values, error)` and `Resume(ctx, fields url.Values) error`.
- `Build.suspendEnvironment()` orchestration: compose the environment key from runner ID, system ID, and executor-specific fields.
- Autoscaler `prepareResume` flow: parse the environment key, call `scaler.Resume`, then inner `Prepare` and `Resume`.
- `EnvironmentKey` type with `String()` / `ParseEnvironmentKey()` for the wire format.
- Skip git source fetching on resume (`BuildStageGetSources` is a no-op when `EnvironmentKey` is set).
- Feature-flagged behind `FF_SUSPENDABLE_ENVIRONMENTS`.
issue