Add variant to transformers
# What does this PR do?

This PR adds a `"variant"` keyword argument to PyTorch's `from_pretrained` and `save_pretrained` so that multiple weight variants can be saved in the model repo. 

You can try it out by running:

```python
from transformers import CLIPTextModel

path = "huggingface/the-no-branch-repo"  # or ./text_encoder if local

print("This should work!:")
model = CLIPTextModel.from_pretrained(path, subfolder="text_encoder", variant="no_ema")
print("This should work!:")
model = CLIPTextModel.from_pretrained(path, subfolder="text_encoder", variant="fp16")
print("This should work!:")
model = CLIPTextModel.from_pretrained(path, subfolder="text_encoder")
print("This should NOT work!:")
model = CLIPTextModel.from_pretrained(path, subfolder="text_encoder", variant="other")
```

From this repo:  https://huggingface.co/huggingface/the-no-branch-repo/tree/main/text_encoder . The repo is a dummy stable diffusion model and folder structure looks as follows:

```
├── feature_extractor
│   └── preprocessor_config.json
├── load.py
├── model_index.json
├── safety_checker
│   ├── config.json
│   └── pytorch_model.bin
├── save.py
├── scheduler
│   └── scheduler_config.json
├── text_encoder
│   ├── config.json
│   ├── pytorch_model.bin
│   ├── pytorch_model.fp16.bin
│   └── pytorch_model.no_ema.bin
├── tokenizer
│   ├── merges.txt
│   ├── special_tokens_map.json
│   ├── tokenizer_config.json
│   └── vocab.json
├── unet
│   ├── config.json
│   └── diffusion_pytorch_model.bin
└── vae
    ├── config.json
    └── diffusion_pytorch_model.bin
```

cc @pcuenca @patil-suraj @sgugger @LysandreJik @julien-c @osanseviero 


**[Update] This PR should be ready for merge**
_The documentation is not available anymore as the PR was closed or merged._<|||||>> pytorch_model.{variant}.bin sounds better to me, to keep the file-extension (not so important for .bin, but more important for .h5, .safetensors or any other format)

Even for `.bin` files, I'd say it's good to keep the file extension as it does not break the LFS property for existing `.gitattributes` files (see [huggingface/the-no-branch-repo](https://huggingface.co/huggingface/the-no-branch-repo/tree/main/text_encoder) where bin files are uploaded as regular).<|||||>Failing test is unrelated. Think this PR is good for merge. 

@wauplin @julien-c good for you? 

The resulting folder structure now looks as described in the PR statement: https://github.com/huggingface/transformers/pull/21332#issue-1559421203<|||||>Thanks for the reviews! Merging<|||||>cc @sgugger would it be possible to add this feature to `push_to_hub` as well?

I'd like to use it for BLIP-2. For the moment it seems the only way to do this is calling `save_pretrained("...", variant="fp16")` and then manually upload the PyTorch checkpoint to the model repo<|||||>Happy to review a PR.