Avoid using get_list_of_files
# What does this PR do?

This PR removes all uses of `get_list_of_files` which uses a non-optimized call on the Hub, to only rely on the API to get files (which is better optimized). It should make the general `from_pretrained` APIs much more stable (cc @julien-c ).

To refactor some of the code we often get to just open a config, this PR adds a new utility in file_utils that will download and cache a given file from a repository and return the resolved path, but only fails if the repository or the revision does not exist. When the file itself does not exist, the function returns None, which make it easy for us to test if a given file (like a tokenizer config) is present or not, without relying on `get_list_of_files`.

The other case where this function was used is when we have a versioned config/tokenizer config in a given repo. In this instance, it will now be necessary to include the list of available configs/tokenizers in the config/tokenizer config so that we don't have to call `get_list_of_files`. There is only one repo in the wild (tested every one) that used this API (which is the last recourse to fix some backward compatibility issues), [microsoft/layoutxlm-base](https://huggingface.co/microsoft/layoutxlm-base), and I have manually fixed its config (the whole change is backward compatible in the sense that this repo will still work with older versions of Transformers).
_The documentation is not available anymore as the PR was closed or merged._<|||||>We can definitely port it in a PR to `huggingface_hub`. I would leave it in this PR for now and wait for a release on `huggingface_hub` to replace it by the one there.