[Generation] Make `generate()` method compatible with speech and vision inputs while keeping 100% backward compatibility.
# 🚀 Feature request

As mentioned by @NielsRogge and @LysandreJik [here](https://github.com/huggingface/transformers/pull/14139#discussion_r736788040) the `generate` function should be made more general by not assuming that the inputs are necessarily `input_ids`. We should also allow inputs to be called `input_values`, `input_features`, `pixel_values` to cope with speech and vision models at 100% backward compatibility. 

@anton-l - if you want to dive a bit into `generate()`, feel free to give this a stab :-)

If you're too busy with other things - don't worry, I can take care of it in like 2 weeks.<|||||>Also as a note, the following hacks should then be removed:

- [this hack](https://github.com/huggingface/transformers/blob/b567510cff606c9dd67cb7c56169bc596590e700/src/transformers/trainer_seq2seq.py#L169) in `Seq2SeqTrainer`
- remove `attention_mask=None` inputs currently defined in the forward pass of `modeling_vit.py` and `modeling_deit.py`.<|||||>For the record, this

```
remove attention_mask=None inputs currently defined in the forward pass of modeling_vit.py and modeling_deit.py
```

is addressed in this PR #14148, which is still under review.<|||||>PR will be finished soon: https://github.com/huggingface/transformers/pull/14784