Add caching mechanism to BERT, RoBERTa
# What does this PR do?
- This PR adds past key/values caching mechanism to `BertLMHeadModel`, `BertGenerationDecoder`, and `RobertaForCausalLM` to speed up the generation of `EncoderDecoder` models

-  delete the `CausalLMOutputWithPastAndCrossAttentions` class and add `past_key_values`  to `CausalLMOutputWithCrossAttentions` and `BaseModelOutputWithPoolingAndCrossAttentions`  . All `ModelOutputs` that have a `cross-attention` should also have a `past_key_values`

- by default caching is enabled for `BertLMHeadModel`, `BertGenerationDecoder`, and `RobertaForCausalLM` during inference (not just generation, also for the forward pass) and now they also output `past_key_values` by default during inference, which is a small breaking change.
  specifically when `config.output_attentions=True` in a `EncoderDecoderModel` model then the 2nd index of the output will be `past_key_values` instead of `attentions`

```python3
model = EncoderDecoderModel.from_pretrained(...)
outputs = model(input_ids)
attentions = outputs[1]  # 2nd index will be past_key_values, instead of attentions
```

- this will only affect the output during generation for `EncoderDecoder` models. Caching will be disabled when the models are used as standalone encoders, so the default output, in that case, is unchanged.

Fixes #9052


`python utils/check_copies.py --fix_and_overwrite` should be run to make the `check_code_quality` test pass<|||||>> `python utils/check_copies.py --fix_and_overwrite` should be run to make the `check_code_quality` test pass

Yeah, did that, for some reason, it's not working for `RobertaEmbeddings`, the code is the same as that of `BertEmbeddings`<|||||>> > `python utils/check_copies.py --fix_and_overwrite` should be run to make the `check_code_quality` test pass
> 
> Yeah, did that, for some reason, it's not working for `RobertaEmbeddings`, the code is the same as that of `BertEmbeddings`

If Roberta has to be different feel free to remove the copy statement<|||||>I just merged a PR that made `cache` related tests a bit more aggressive: https://github.com/huggingface/transformers/pull/9256. It would be awesome if you could run your PR on the `EncoderDecoderModel` slow tests to make sure the cache doesn't change the results.<|||||>Merging !