TF: XLA Beam Search
# What does this PR do?

WIP

Dependencies:
1. #17426 
2. #17479 

Status log:
1. 2022/05/27: XLA compiles, but fails at runtime. The same code runs in eager execution. The XLA compiler seems like it is not able to pick up the right information during beam search, as it complains inside the forward pass on things that work fine with greedy search/sample. Maybe it's GPT-2 specific. Going to fix enable XLA on BART and retry there.
2. 2022/05/30: Now with BART. Same thing -- it compiles, but gets confused at run time. The exact same code path, with eager execution, runs fine. I suspect the cache creation inside the while loop doesn't help.

Ideas yet to explore:
1. Split past cache creation from past cache update, and create the cache before the loop. XLA expects variable creation at  trace time, and we can do it with the proper separation;
The docs for this PR live [here](https://moon-ci-docs.huggingface.co/docs/transformers/pr_17458). All of your documentation changes will be reflected on that endpoint.<|||||>Closed in favor of #17857