Allow relative imports in dynamic code
# What does this PR do?

This PR ensures one can use relative imports when defining a module.py (or other kinds of file) living on the Hub. Without this, writing a custom configuration and wanting to use it in a custom model fails, line this [repo](https://huggingface.co/hf-internal-testing/test_dynamic_model).

To solve this, the way the module files are copied in the transformers module is changed slightly as they need to keep their original name (and not the e-tag). To make sure we don't copy cached files needlessly, but still benefit from updates in the main repo, the commit hash of the repo is used as a submodule name, so the modeling files are stored in `transformers_module/repo_id/hash/`. When the hash changes, a new copy of the modeling files from the cache is done, but those files are only downloaded if there was an update to them (since they are still cached with their e-tag name).

Several tests are added to make sure everything works well.
_The documentation is not available anymore as the PR was closed or merged._