Cache: `Bart` and related architectures support `Cache` objects
Author: gante
Pull request: yes
Labels: name: WIP

# What does this PR do?

This PR applies the changes to `Bart` so it supports the new `Cache` objects. In other works, it is akin to #26681 but for encoder-decoder models.

⚠️ This is a giant PR that can't be separated due to our copy mechanism (🙃), but the review process doesn't need to be daunting. Here's my suggested review order and high-level rationale:
1. Changes in `cache_utils.py`. I've introduced `DynamicCacheWithCrossAttention`, which expands `DynamicCache` [cache object equivalent to the previous `past_key_values` input/output] with the ability to hold a cross-attention cache. This design was intentional: most LLMs (and now even multimodel models) tend to be decoder-only, so this separation will keep the cache class for decoder-only models simpler. It also enable us to be more strict -- I've caught an unintended cache deletion in Whisper thanks to the increased specificity!
2. Changes in `modeling_bart.py`. These changes are the equivalent of the modeling changes in #26681, but for encoder-decoder models.
3. Other changes, which can be reviewed more lightly. They are either related documentation fixes, minor corrections, propagation of bart's changes through `make fix-copies` (plus a few manual changes like adding imports or updating docstrings), or test upgrades for the new `DynamicCacheWithCrossAttention`. 

___________________________________________________________________________
The following tests were run locally - includes FA2 and some pretty challenging tests to ensure nothing was broken in the process:
- [x] `RUN_SLOW=1 py.test tests/models/bart/test_modeling_bart.py -vv`
- [x] `RUN_SLOW=1 py.test tests/models/mbart/test_modeling_mbart.py -vv`
- [x] `RUN_SLOW=1 py.test tests/models/whisper/test_modeling_whisper.py -vv` 

👉 In any case, we should run the slow CI before merging!

<details>
  <summary>Note on Whisper: same failures as in `main`, i.e. (open me)</summary>
  
  ![Screenshot 2023-12-15 at 14 59 22](https://github.com/huggingface/transformers/assets/12240844/f8193a93-8d60-4860-a9e2-7c990cc79c7e)
</details>



Comments:
The docs for this PR live [here](https://moon-ci-docs.huggingface.co/docs/transformers/pr_28065). All of your documentation changes will be reflected on that endpoint. The docs are available until 30 days after the last update.

@amyeroberts this PR is not finalized, but I'd love to get an early review -- the failing tests are fixed by propagating the changes to models with the `#Copied from` statement. However, it's not a copy/paste job, so if you were to request changes, they could be painful to propagate to the remaining models 😬 

The key parts to review now are labeled as `1` and `2` in the PR header 🤗 

This issue has been automatically marked as stale because it has not had recent activity. If you think this still needs to be addressed please comment on this thread.

Please note that issues that do not follow the [contributing guidelines](https://github.com/huggingface/transformers/blob/main/CONTRIBUTING.md) are likely to be ignored.

Mr bot, this is not stale (on hold while the static cache is being worked on, as they will likely have overlapping changes and the static cache is more important)

Closing this PR, at this point it's easier to start from scratch