Implement HTTP caching with max-age on diffs_batch.json

Background

As discussed in #381607 (closed), we can utilize the built-in HTTP caching of browsers (Chrome seems to have a bug though) by setting max-age via Cache-Control headers. This way, when client hits the same request it'll used the one in the browser's cache instead.

Proposal

  1. Set Cache-Control: max-age=86400, private header for diffs_batch.json when ck param (short for cache key) is present and we're displaying the HEAD diff.
  2. Set the cache_key in the Project::MergeRequestsController#show template so it can be used by frontend. For now, this can be the id of the HEAD MergeRequestDiff.
  3. Introduce this behind a feature flag.

Specifically targetting HEAD diff for now since it's the default diff we show on the MR changes tab. We can iterate for other diff versions later on.