Fix beam search computing wrong `next_indices`
# What does this PR do?

Beam search used `next_indices = (next_tokens / vocab_size).long()` to compute the indices of the best beams. This, however, uses [torch.true_divide](https://pytorch.org/docs/stable/generated/torch.true_divide.html#torch-true-divide) which would lead to numerical errors and make the following snippet fail:
```py
import torch

next_tokens = torch.tensor([[0, 50257]], dtype=torch.int64, device='cuda:0')
vocab_size = 50257
expected_next_indices = torch.tensor([[0,1]], dtype=torch.int64, device='cuda:0')

next_indices = (next_tokens / vocab_size).long()
print(next_indices)

assert torch.all(next_indices == expected_next_indices)  # Fails
```

The simple fix in this PR uses floor division to avoid the aforementioned problem:
```py
# ...
next_indices = torch.div(next_tokens, vocab_size, rounding_mode='floor').long()
print(next_indices)

assert torch.all(next_indices == expected_next_indices)  # Passes
```

I have dug out this bug while recomputing the beam search scores by hand for gpt2. If needed, I can add an end-to-end high-level reproducibility test with gpt2 and the tricky input_ids, and possibly add it as a unit test.

## Who can review?

@patrickvonplaten
The docs for this PR live [here](https://moon-ci-docs.huggingface.co/docs/transformers/pr_18165). All of your documentation changes will be reflected on that endpoint.