Use a dynamic configuration for circleCI tests
# What does this PR do?

This PR entirely rewrites the circle CI setup for the tests run at each commit, to use a configuration generated on the fly depending on which tests should be run. It also offers a Python wrapper around the circleCI API via the new util `create_circleci_config.py`.

This way, when a commit does no modification in the source code/tests/examples, only the quality jobs and the test fetcher are run (see the job below this PR). When a modification only touches the examples, the quality jobs and the example tests are run (see this [job](https://app.circleci.com/pipelines/github/huggingface/transformers/48462)) and when a modification touches some code, all tests jobs and example tests are run (tests jobs running on impacted tests only) as seen in this [report](https://app.circleci.com/pipelines/github/huggingface/transformers/48461).

The generated config is stored as an artifact in the `fetch_tests` job (in txt format because yml would not be rendered).
_The documentation is not available anymore as the PR was closed or merged._<|||||>Feel free to merge whenever ready