Implement diff viewers
Depends on https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/11776, https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/11977, https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/11978, https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/11979, https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/11980, https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/11981, https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/11982
Related to https://gitlab.com/gitlab-org/gitlab-ce/issues/30990. Fixes https://gitlab.com/gitlab-org/gitlab-ce/issues/30501. Closes https://gitlab.com/gitlab-org/gitlab-ce/issues/19931.
Adds framework for diff viewers similar to that for blob viewers (https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/10566).