TF: GPT-J compatible with XLA generation
# What does this PR do?

This PR modifies TF GPT-J so as to be compatible with XLA generation. It borrows the new code from FLAX -- in essence, instead of computing the embedded positions (`sincos`) at each call, given the size of the sequence (which could be obtained from the size of the past), now pre-computes the embedded positions and gathers them given the `position_ids`.

⚠️ The integration tests are disabled with `@tooslow`, due to the size of the model. I've reworked the tests BEFORE touching GPT-J code, to test all needed features correctly. All but the XLA test were passing before GPT-J was changed, and all tests pass after the changes. We still have two XLA tests being run in CI frequently (`test_xla_generate_fast` and `test_xla_generate_slow`), as well as a couple of generic generate tests -- they just don't use the trained model weights.
Related issue: #17935 <|||||>_The documentation is not available anymore as the PR was closed or merged._