Make LazyModule picklable
From this issue https://github.com/huggingface/transformers/issues/12549 it seems that it could be nice to have the `transformers` module picklable, since it can be useful for the `datasets` library's caching for example.

The only object that is currently not picklable is the `_LazyModule`.

In this PR I just made this object picklable, and so `transformers` becomes picklable as well.

This should hopefully help with issue https://github.com/huggingface/transformers/issues/12549
This doesn't work sadly, because it then sets the wrong `__file__` and `__path__` attribute to the `transformers` module:
```py
import transformers
transformers.__file__
```
will return something like `'/home/sgugger/git/transformers/src/transformers/file_utils.py'` instead of `'/home/sgugger/git/transformers/src/transformers/__init__.py'`.

This will then probably mess up lots of things that depend on those attributes.

I can look at another solution when I have some time.<|||||>Indeed ! Thanks for checking
At least I tried x)

There must be a way to keep _LazyModule inside `__init__.py` and make it picklable. Currently the issue is that it can't be imported like this `from transformers import _LazyModule`. But as soon as we enable its import, it will be possible to pickle it.<|||||>This issue has been automatically marked as stale because it has not had recent activity. If you think this still needs to be addressed please comment on this thread.

Please note that issues that do not follow the [contributing guidelines](https://github.com/huggingface/transformers/blob/master/CONTRIBUTING.md) are likely to be ignored.<|||||>Resolved by #12567