Push to hub when saving checkpoints
# What does this PR do?

This PR enables automatic checkpointing on the Hub by introducing a new training argument called `hub_strategy`. This argument can take several values:

- `"end"`: push the model, its configuration, the tokenizer (if passed along to the `Trainer`) and a draft of a model card at the end of training.
- `"every_save"`: push the model, its configuration, the tokenizer (if passed along to the`Trainer`) and a draft of a model card each time there is a model save. The pushes are asynchronous to not block training, and in case the save are very frequent, a new push is only attempted if the previous one is finished. A last push is made with the final model at the end of training.
- `"checkpoint"`: like `"every_save"` but the latest checkpoint is also pushed in a subfolder named last-checkpoint, allowing a user to resume training easily with `trainer.train(resume_from_checkpoint="last-checkpoint")`. The final repository won't have that checkpoint folder, but you can find it in the second-to-last commit.
- `"all_checkpoints"`: like `"checkpoint"` but all checkpoints are pushed like they appear in the output folder (so you will get one checkpoint folder per checkpoint in your final repository)

The default value is `"every_save"`, which slightly changes the behavior when a user passes along `--push_to_hub`.

This PR relies on [this PR](https://github.com/huggingface/huggingface_hub/pull/315) on the huggingface_hub part, so checking out that branch is necessary for testing it. Tests won't pass before a new release of huggingface_hub with this PR is out.

cc @julien-c 