Refactor the QA framework to make `Runtime::Env` read-only
<!--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=29785)
</details>
<!--IssueSummary end-->
The following discussion from gitlab-ce!29937 should be addressed:
- [ ] @mlapierre started a [discussion](https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/29937#note_185893361): (+4 comments)
> I don't think we should change the value of anything in `Runtime::Env` -- it's supposed to represent environment variables, so it should be read-only.
This caused problems previously because we assume `Runtime::Env` will always contain the values set in the environment, so when a test changed `Runtime::Env.personal_access_token` [subsequent tests failed](https://gitlab.com/gitlab-org/quality/nightly/issues/58#note_132551746).
issue