Use CI Steps to define developer environment configuration for Workspaces
<!--IssueSummary start-->
<details>
<summary>
Everyone can contribute. [Help move this issue forward](https://handbook.gitlab.com/handbook/marketing/developer-relations/contributor-success/community-contributors-workflows/#contributor-links) while earning points, leveling up and collecting rewards.
</summary>
- [Close this issue](https://contributors.gitlab.com/manage-issue?action=close&projectId=278964&issueIid=547117)
</details>
<!--IssueSummary end-->
MR: Pending
<!-- NOTE: For context on MR heading, see:
https://handbook.gitlab.com/handbook/engineering/devops/dev/create/remote-development/index.html#relationship-of-issues-to-mrs
-->
## Description
As part of https://gitlab.com/groups/gitlab-org/-/epics/16650+ , we will be converting a devfile into a CI job YAML. We will essentially be converting the devfile into a list of [CI Steps](https://docs.gitlab.com/ci/steps/) and creating a job from those steps.
The issue is about providing users the ability to directly define CI steps for defining their developer environments instead of providing a devfile.
The reasons for this are as follows
- CI Steps are composable units of execution.
- CI Steps can be run locally in a docker container - https://gitlab.com/groups/gitlab-org/-/epics/15073+
- CI Steps provides a registry to publish various CI steps. Users can bring in their own registries or CI Steps.
- CI Steps provides a concept of versioning in-built.
- CI Steps are already used in CI. As we are using CI Runners, using the same constructs/definitions would bring a unifying approach as a platform.
- CI Steps are also being proposed for Duo Workflows.
- CI Steps are a definition by GitLab which are highly composable. Relying on a foreign definition(devfiles/devcontainers) can be restrictive/challenging in terms of what we want to do vs what the specification wants you to do.
## Acceptance criteria
- [ ] Run an investigation to determine the feasibility and benefits of this.
- [ ] Understand if we need to build on top of [CI/CD Components](https://docs.gitlab.com/ci/steps/#combine-cicd-components-and-cicd-steps) or CI Steps
## Implementation plan
N.A.
This is a discussion/spike issue.
<!-- NOTE: Feel free to expand with more sections and headers as needed -->
<!-- DO NOT TOUCH BELOW -->
issue