Add SegFormer
# What does this PR do?

This PR adds [SegFormer](https://arxiv.org/abs/2105.15203), a new model by NVIDIA that is surprisingly simple, yet very powerful for semantic segmentation of images. It uses a hierarchical Transformer as backbone, and an all-MLP decode head. I've implemented 3 models: 
* `SegformerModel` (backbone-only)
* `SegformerForImageClassification` (backbone + classifier head)
* `SegformerForSemanticSegmentation` (backbone + semantic segmentation all-MLP head)

Models are on the hub (with approval from the author): https://huggingface.co/models?other=segformer

Here's how to use the semantic segmentation model:

```
from transformers import SegformerFeatureExtractor, SegformerForSemanticSegmentation
from PIL import Image

feature_extractor = SegformerFeatureExtractor(do_random_crop=False)
model = SegformerForSemanticSegmentation.from_pretrained("nvidia/segformer-b0-finetuned-ade-512-512")

image = Image.open("...")

# prepare image for model
pixel_values = feature_extractor(image, return_tensors="pt").pixel_values

# forward pass
outputs = model(pixel_values)

# logits are of shape (batch_size, num_labels, height/4, width/4)
logits = outputs.logits
```

Quick inference notebook with visualization: https://colab.research.google.com/drive/1Kc1VLuFrWUPz0rZXA2E_rKQqdK7kV2iH?usp=sharing

## To do/questions

- [ ] Decide on the default values of the feature extractor (which are kind of arbitrary right now)
- [ ] I've called the decode head `SegformerDecodeHead`, rather than SegformerDecoder. It's more of a lightweight head, than a decoder. Is this ok?
- [ ] Add padding of images + segmentation maps (probably a single function in `image_utils.py`), cc @sgugger. Currently, I rely on `torch.nn.functional.pad`, which makes the feature extractor depend on PyTorch. It could also make sense to do it in Numpy (this model for example pads after normalizing, so it would benefit from it as the output after normalization are Numpy arrays).
- [x] Make sure model doesn't return hidden states when the user doesn't want to
- [ ] Model currently returns a `SequenceClassifierOutput`, however this will render wrong shapes of logits in the docs. Logits are actually of shape (batch_size, num_labels, height/4, width/4).
- [ ] Add model cards (author has joined the NVIDIA org on the hub and might create these)

PR is ready for review, only thing to be added is padding.