Add callback that saves only best checkpoints
### Feature request

A new class for a callback that saves checkpoint only if it performs better than the previous checkpoint on the evaluation dataset. It can work similar to the [EvalCallback](https://stable-baselines3.readthedocs.io/en/master/guide/callbacks.html) that is proposed by stable_baselines3.

### Motivation

This callback will enable evaluating model frequently without using a lot of memory, because only several checkpoints will  be kept. 

### Your contribution

Submitting PR
cc @sgugger <|||||>We already have `save_total_limits` to limit the number of checkpoint saved, and with `load_best_model_at_end=True` the best checkpoint is always kept. Which use case that is not currently available would this new callback permit?<|||||>I haven't noticed that it is possible to use these options together. The only thing that is different in proposed callback is that all saved checkpoints perform better on the evaluation dataset than the rest of the checkpoints. <|||||>This issue has been automatically marked as stale because it has not had recent activity. If you think this still needs to be addressed please comment on this thread.

Please note that issues that do not follow the [contributing guidelines](https://github.com/huggingface/transformers/blob/main/CONTRIBUTING.md) are likely to be ignored.