Kill async pushes when calling push_to_hub with blocking=True
# What does this PR do?

This PR fixes a bug that sometimes appear in the `Trainer` when `push_to_hub=True`: if one of the async pushes finishes after a regular non-async push, the history gets messed up and we end up with an error like this:

```
The push command with PID 1468 failed.
remote: error: cannot lock ref 'refs/heads/main': is at 07c85fd69cd46a7daee6323c5a5eefc3e6a886da but expected 1fd7f122ef725f8e340a14bc97d537812de44076      
```

To fix this, when the `Trainer` (or the user) calls `push_to_hub` with `blocking=True`, we interrupt any push in progress. The commit history will still be good since the commit don't take time.

cc @philschmid who had the error.
_The documentation is not available anymore as the PR was closed or merged._<|||||>I think this is the right solution, but I wonder if we can't test it in a reproducible manner. Maybe we could do something like the following:

- Commit a largish file, and push that
- Reset the head without keeping the changes so that we're back on the previous commit
- Commit a small file, and push that.

Now the first commit will likely fail with the error above. Unfortunately, this is likely a very heavy test, so I'm not sure it should be part of the CI. It can stil be used to test the validity of the solution above, though!<|||||>Actually @philschmid but let's say we are the same person ;-) <|||||>For more context tested with `roberta-large`