Use new huggingface_hub tools for download models
# What does this PR do?

This PR migrates Transformers to fully rely on `huggingface_hub` for the internal download and cache of all objects in Transformers (models, configs, tokenizers, feature extractors etc). To achieve this, a new function `cached_file` is introduced to replace the old `cached_path`, which relies on `hf_hub_download`. The whole refining of exceptions is left in this function, which allows for a lot of refactor of duplicate code across files, as well as removing some ugly try/except chains when we try several files in a row.

The cache is in the new format of huggingface_hub after this PR. To avoid breaking changes, a script will automatically converts the cache of users from the old format to the new format at the first transformers import. A warning is raised for offline users, and if the move fails for any reason or is interrupted, the user can still try later on with `transformers.util.move_cache()` (did not make a CLI command of it, but it's doable if we want).

**Note:** To avoid this PR being too heavy, all uses of `cached_path` and other old hub utils are not changed, only the main ones in the `from_pretrained` methods. A follow-up PR will hunt all remaining instances and remove those utils from the lib.

In the CI we trust! As you can see from the tests, this all comes at zero breaking changes (detected by the CI). The only modifications to the tests are small adaptations needed for some mock tests simulating no connection. Anticipated small breaking changes are:
- some error messages have slightly changed.
- if a user relied on offline mode and does not update their cache while updating Transformers, it will break. They need to be online to convert their cache to the new format.

For full backward compatibility with what `cached_path` used to do though, a few hacks were necessary. Some of those can be removed in the future if changes are made to `huggingface_hub`:
1. having methods to allow for enabling/disabling progress bars
2. throwing a `FileNotFoundError` instead of a `ValueError` when in offline mode and the file is not in the cache
3. having `hf_hub_download` look for files in the cache in case of connection errors (so if a user has the filed cached and hf.co is down, they still get their last updated version).

For 1, I had to do a contextmanager that patches huggingface_hub.
For 2, I match the exact error message for the exception I want to catch, but if no change is made in hf hub, we'll at least need a comment in bold telling the maintainers there to never update the message.
For 3, a new function `try_to_load_from_cache` is created, which can definitely leave in Transformers forever if it's not deemed suitable for `huggingface_hub`.
_The documentation is not available anymore as the PR was closed or merged._<|||||>Yay! TYSM!!!