Use etag caching for merge request attributes which must be invalidated on project attributes change
<!--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=36821)
</details>
<!--IssueSummary end-->
The idea is to gradually migrate the fields out of [MergeRequestPollWidgetEntity](https://gitlab.com/gitlab-org/gitlab/blob/master/app%2Fserializers%2Fmerge_request_poll_widget_entity.rb) to the [MergeRequestPollCachedWidgetEntity](https://gitlab.com/gitlab-org/gitlab/blob/master/app%2Fserializers%2Fmerge_request_poll_cached_widget_entity.rb). The following attributes must be invalidated when project attributes change:
|Frondend attribute|Backend attribute|When should be invalidated|
|-|-|-|
|createIssueToResolveDiscussionsPath|create_issue_to_resolve_discussions_path|changing issues_access_level of a project (depends on attr individual to a user)|
|sourceBranchProtected|source_branch_protected|setting a branch to protected|
|shouldBeRebased|should_be_rebased|changing ff_merge_must_be_possible? project attr|
|ffOnlyEnabled|ff_only_enabled|changing merge_requests_ff_only_enabled project attr|
|project_archived|project_archived|changing project archived attr|
|hasMergeableDiscussionsState|mergeable_discussions_state|changing only_allow_merge_if_all_discussions_are_resolved? attr and discussions iteration|
|allowCollaboration|allow_collaboration|project and protected branch|
Related issue: https://gitlab.com/gitlab-org/gitlab-foss/issues/61559
issue