Store extended diff stats in the merge_request_diffs table
<!--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=535706)
</details>
<!--IssueSummary end-->
Right now when we fetch from [the `diffs_stats` endpoint](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/186128) we also calculate the overflow, which tells us if we hit the diff limits. This process requires fetching the whole diffs collection, which might take a while on very large diffs collections (500ms total for 236 files and 6000 changed lines). In order to solve that issue we can store extended diffs stats right in the `merge_request_diffs` table, the same way we already store `real_size` and `files_count`.
Things that we need to store in order to skip fetching the whole collection:
1. Number of added lines
2. Number or removed lines
3. Total number of lines, including context lines (skips collapsed files)
4. Total bytesize, including context lines (skips collapsed files)
After that we would need to update [DiffCollection class](https://gitlab.com/gitlab-org/gitlab/blob/cf9c27accfb05bbb9e7ea94bfaf8695a1e7ccf4b/lib/gitlab/git/diff_collection.rb#L7) to support persisted counters.
issue