Add ViLT
# What does this PR do?

This PR adds [ViLT](https://arxiv.org/abs/2102.03334) (Vision and Language Transformer).

It's a very nice, minimal multi-modal model, as it only adds a text embedding layer to an existing ViT.

I've defined the following head models:

* `ViltForMaskedLM`
* `ViltForVisualQuestionAnswering`
* `ViltForNaturalLanguageVisualReasoning`
* `ViltForImageRetrievalTextRetrieval` (CLIP-like model).

To do:

- [x] add `ViltForNaturalLanguageVisualReasoning` to the tests. However, I do have a question here: it's the only model that requires `config.modality_type_vocab_size = 3` instead of 2. How can I handle this exception in the tests? I could do it like this:

```
for model_class in self.all_model_classes:
    config, inputs_dict = self.model_tester.prepare_config_and_inputs_for_common()
    config.return_dict = True

    if model_class.__name__ == "ViltForNaturalLanguageVisualReasoning":
       config.modality_type_vocab_size = 3
```
But that's not ideal as it would require overwrite each individual test.

Update: fixed by create a separate `ModelTester` for this particular model, that overrides the `get_config`.
I'd like the PR to be green (or mostly green) before reviewing.<|||||>@sgugger should be mostly green now.<|||||>Note: with the new build dev job merged, you can preview the doc [here](https://moon-ci-docs.huggingface.co/docs/transformers/pr_14895/en/model_doc/vilt) :-) <|||||>Great job merging this PR! the documentation will now be removed from the staging environment.