Generate: TF XLA beam sample
# What does this PR do?

## Context
This is a 2-in-1 PR. While working on adding `generation_config` to TF's `generate`, I noticed that I would have twice the work. This is because on `main` we have `generate()` and `_generate()`, where the former is the legacy version that calls the latter except for beam sample (which is not XLA compatible before this PR). As such, this PR completes the transition to XLA and removes most legacy code, simplifying the transition to the generation config.

## Changes
1. Replaces `generate()` by `_generate()`, which was the original goal of the XLA refactor (and will make my life easier);
2. Deletes many private functions that are no longer reached;
3. Updates RAG accordingly (from the old beam search to the XLA-compatible beam search), slow tests are passing;
4. ⚠️ Adds beam sample on the existing `beam_search` function. Unlike PT implementation, this is NOT a stand-alone function. This was a deliberate decision to decrease maintenance costs, as I don't think it would be wise to add ~500 lines of code for a functionality that is infrequently used, and can be solved with a few extra lines.
_The documentation is not available anymore as the PR was closed or merged._