Move logic for "displayed state" from frontend to backend.
MR: Pending
## Description
The following discussion from !163093 should be addressed:
- [ ] @cwoolley-gitlab started a [discussion](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/163093#note_2166855901): (+4 comments)
> **suggestion (non-blocking):** Early in the feature development for workspaces, there was some server-side logic that had a concept of calculating the `displayed_state` based on the combination of `actual_state` and `desired_state`.
>
> But we ended up removing that for some reason, I think because we thought it wasn't necessary anymore, and we could always just display the `actual_state` in the UI. Maybe @vtak remembers more, or we could dig into the commig/MR history.
>
> But based on all this logic here, it appears that hasn't turned out to be the case, and now we have all this domain logic living on the frontend.
>
> I would instead prefer that this logic be moved back to the backend, and just expose a new `displayed_state` field on the workspace via the GraphQL API.
>
> Not only to have the logic live on the backend instead of frontent, but also so it's available to any other API consumers other than the Vue client - e.g. reports, third party integrations, etc.
>
> If there's agreement on this, lets make a follow-up issue to do that. WDYT?
## Acceptance Criteria
- [ ] Introduce concept of `displayed_state` on the backend `Workspace` model, and move all related calculations from frontend to backend.
## Technical Requirements
TODO: Fill out or delete (optional)
[If applicable, please list out any technical requirements for this feature/enhancement.]
## Design Requirements
TODO: Fill out or delete (optional)
[If applicable, please provide a link to the design specifications for this feature/enhancement.]
## Impact Assessment
TODO: Fill out or delete (optional)
[Please describe the impact this feature/enhancement will have on the user experience and/or the product as a whole.]
## User Story
TODO: Fill out or delete (optional)
[Provide a user story to illustrate the use case for this feature/enhancement. Include examples to help communicate the intended functionality.]
<!-- Replace with other type, e.g. bug or maintenance, if appropriate -->
<!-- Replace with other subtype if appropriate -->
<!-- By default, all issues start in the unprioritized status. See https://handbook.gitlab.com/handbook/engineering/development/dev/create/remote-development/#-planning-process -->
<!-- For simplicity and to avoid triage bot warnings about missing workflow labels, we will default to issues starting at the refinement phase -->
issue