[trainer/deepspeed] load_best_model (reimplement re-init)
This PR fixes https://github.com/huggingface/transformers/issues/17114

The `deepspeed_reinit` hack proved to not always work, as some stored args appear to be either stale or wrong (e.g. the optimizer can be a deepspeed outer optimizer which shouldn't be the case), so trying to just do a full init from scratch instead. 

And then there was an issue on the deepspeed side with model getting deepspeed hooks added multiple time which was breaking everything. Fixed in https://github.com/microsoft/DeepSpeed/pull/1947.

I spent many hours trying to reproduce the problem in the usual way via examples scripts to make a test, but alas, it just won't fail in the right places. So I ended up re-implemented `test_load_best_model` using code derived from @base-y's repro example. So super appreciating having their script.

### Blocking events

- [x] merge https://github.com/microsoft/DeepSpeed/pull/1947
- [x] update the dependency table to the new ds release after the merge 0.6.5

Fixes: https://github.com/huggingface/transformers/issues/17114
_The documentation is not available anymore as the PR was closed or merged._<|||||>when will this pr be merged ?<|||||>We needed to wait for a new deepspeed release, which I see has happened already, so yes, we can merge this shortly. 