Enforce eval and save strategies are compatible when --load_best_model_at_end
# What does this PR do?

There are multiple reports form users not understanding their `save_strategy` or `save_steps` are overridden by `eval_strategy` and `eval_steps`, so this PR changes the current behavior to raise an error when:
- there is a mismatch between the `save_strategy` and the `eval_strategy`
- in case that common strategy is "steps", `save_steps` is not a round multiple of `eval_steps`.

This way each save happens at the same time as an evaluation and `--load_best_model_at_end` can proceed properly.

Supersedes #12687
What if we only want to save the best checkpoint during training? Saving a checkpoint every time we do an evaluation will take much space and many checkpoints are unnecessary.<|||||>I see! This should be implemented by setting save_total_limit==1, but it would be great if there's something like a saving strategy called "save_best".