Trainer.hyperparameter_search() should give the option to reload the model from the best run before completing
### Feature request

After calling `Trainer.hyperparameter_search()`, the instance of `Trainer` contains the last trained model, among the multiple models trained for optimization of the hyperparameters. There should be an option, perhaps among those of `TrainingArguments`, to have the instance of `Trainer` reload the model from the best run (the best model) before `Trainer.hyperparameter_search()` returns.

### Motivation

After optimizing hyperparameters we are typically interested in the trained model that optimizes them, not the model that, accidentally, was trained in the last run of optimization. We are interested in the *best* model, not the *last* model. 

Currently, accessing the best model is tricky, as one has to reload it from checkpoints on disk, after figuring out what the path to the wanted checkpoint is. The latter is further complicated by the fact that there may be multiple checkpoints on disk for the run that produced the best model, and we specifically want the checkpoint at the end of the epoch where the objective function was maximized (or minimized), which is not necessarily the last epoch of the run.

### Your contribution

N/A
I have found the path to the saved checkpoint with the best model, after hyperparameter optimization has completed, is in `Trainer.state.best_model_checkpoint`, the model can then be easily loaded from that checkpoint.
I leave this here in case it may help someone else find where that information is tucked away.<|||||>Hi, I have found that the proposed solution does not work. Seems like `Trainer.state.best_model_checkpoint` will always have the best checkpoint for the latest Trial run.

I went around this by creating my own `TrainerCallback` that tracks best and last checkpoints for each all trials in a sweep. In the end I just need to get it from it.