[WIP]Resnet with variants
# What does this PR do?
This PR shows how including the required changes to make `resnet-d` variant look but also to quickly decide to use one embedding type over another.

Usage:

```python
# normal embeddings
config = ResNetConfig(embedding_type='basic')
# embeddings is replace by 3 3x3 convs
config = ResNetConfig(embedding_type='deep')
# normal shortcut (stride=2) in a conv layer to downsample
config = ResNetConfig(shortcut_type='basic')
# resnet-d shortcut, avg pool to downsample (no stride = 2) in the conv
config = ResNetConfig(shortcut_type='avg_down')
# resnet-d like config
config = ResNetConfig(embedding_type='deep', shortcut_type='avg_down')
# use it as usual
model = ResNetForImageClassification(config)
```

For example, [mmlab*** ](https://github.com/open-mmlab/mmdetection/blob/master/mmdet/models/backbones/resnet.py) allows creating different ResNet architectures similar to how this pr does by allowing the user to pass `embedding_type` and `shortcut_type`
The docs for this PR live [here](https://moon-ci-docs.huggingface.co/docs/transformers/pr_15912). All of your documentation changes will be reflected on that endpoint.<|||||>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/main/CONTRIBUTING.md) are likely to be ignored.