Create a runner step that can run a user script

Problem

Runner is being used as customer 0 of CI Steps. Each build stage needs to be replaced with a step.

Proposal

When the user runs a CI job that uses script: ..., internally, the Runner should execute the script using a Runner-specific step. The step must be 100% backwards compatible with what executes now if script runs. A user should not be expected to migrate to the new approach.

This issue requires the step to be implemented, calling the step is a responsibility of The runner can decide whether to dispatch scrip... (#289).

The step must be defined as a step function, so must have a specification and an execution method Run. An example of a step function can be found in step-runner's script. Note the step-runner's script implements a subset of features of the Runner script and cannot be used for this issue.

The step function should be registered with the step-runner. (example)[https://gitlab.com/gitlab-org/step-runner/-/blob/main/pkg/di/container.go#L62]

The concrete step

A spike was made to run steps, which came up with the idea of a "concrete" step. The step would contain most of the steps required by the Runner (one step, step has a method per build stage). The spike showed one way of passing configuration to the step using a build function. See MR.

Edited by Cameron Swords