[TF Bart] Refactor TFBart
# What does this PR do?

<!--
Congratulations! You've made it this far! You're not quite done yet though.

Once merged, your PR is going to appear in the release notes with the title you set, so make sure it's a great title that fully reflects the extent of your awesome contribution.

Then, please replace this with a description of the change and which issue is fixed (if applicable). Please also include relevant motivation and context. List any dependencies (if any) that are required for this change.

Once you're done, someone will review your PR shortly (see the section "Who can review?" below to tag some potential reviewers). They may suggest changes to make the code even better. If no one reviewed your PR after a week has passed, don't hesitate to post a new comment @-mentioning the same persons---sometimes notifications get lost.
-->

<!-- Remove if not applicable -->

Mirror of #8900 for TFBart.

The same improvements are done for Bart except adding torchscript functionality (as it does not exist in tf bart).

- [x] Keep dims consistent within the model -> no switching around between time x batch_size and batch_size x time. We can just stick to batch_size x time throughout the whole forward pass just like other models do too.
- [x] Clean the Attention layer: Replace dict cache by past_key_values tuple (consistency with other models and stateless which is better IMO). Break up complicated if-else cascade and remove unnecessary parameters.
- [x] Correct error with past_key_values/decoder_input_ids/use_cache
- [x] Add input_embeds to Bart
- [x] (very subjectively) better naming
- [x] Check that all slow tests are passing
- [x] Update docstring and final design change check
- [x] Refactor Bart tests
- [x] should solve https://github.com/huggingface/transformers/issues/9048
- [x] Check no speed regression
No speed regression on GPU brutasse in graph mode. PR is ready for review IMO.<|||||>> Awesome!! Thanks for taking care of this part!!
> 
> Should we merge #9063 before or after this one?

Let's merge after your PR. I'll take the merge conflicts from you :-)
Also this way I can play around a bit with the new not-existing-cast-bool functionality, yaaay!