Swin support for any input size
# What does this PR do?
This PR adds padding to Swin allowing to support any (if divisible by `32`) input size.

Example:

```python
from transformers import SwinConfig, SwinModel
import torch

model = SwinModel(SwinConfig(image_size=384))
x = torch.randn((1, 3, 1024, 640))
out = model(x)
```

Moreover, it adds a new field to the outputs, `hidden_states_spatial_dimensions`, containing the spatial dimension of all the stages' inputs
The docs for this PR live [here](https://moon-ci-docs.huggingface.co/docs/transformers/pr_15986). All of your documentation changes will be reflected on that endpoint.<|||||>Swin now returns a list of reshaped `hidden_states` (B, C, H, W). However, due to the `view` operation, the viewed tensor won't have `.grad` in it, so `test_retain_grad_hidden_states_attentions` fails. Not sure how to proceed

```python
from transformers import SwinConfig, SwinModel
import torch

model = SwinModel(SwinConfig(image_size=384))
x = torch.randn((1, 3, 1024, 640))
out = model(x, output_hidden_states=True)
[print(e.shape) for e in out.hidden_states]

torch.Size([1, 96, 256, 160])
torch.Size([1, 192, 128, 80])
torch.Size([1, 384, 64, 40])
torch.Size([1, 768, 32, 20])
torch.Size([1, 768, 32, 20])
```

Maybe I am missing something, kindly pinging @sgugger <|||||>Following @NielsRogge suggestion, we now return the reshaped hidden sized inside `reshape_hidden_sizes` in all four (`Encoder/Model/MaskedImage/ImageClassifier`) outputs<|||||>Thanks to all the reviewers. I've resolved all the conversation and renamed some layers to match our convention of `Stage` and `Layer`