Trainer is missing sampler.set_epoch for distributed mode
# 🐛 Bug

## Information

`train_dataloader.sampler.set_epoch(epoch)` is missing before the start of each epoch in [trainer.py](https://github.com/huggingface/transformers/blob/3e0f06210646a440509efa718b30d18322d6a830/src/transformers/trainer.py#L406).

According to [here](https://pytorch.org/docs/stable/data.html#torch.utils.data.distributed.DistributedSampler) :

> In distributed mode, calling the `set_epoch` method is needed to make shuffling work; each process will use the same random seed otherwise.

Good spot! I think @julien-c's latest PR (https://github.com/huggingface/transformers/pull/4243) for distributed eval will also take care of this! 