processor.model_input_names doesn't work as it should be
Author: NielsRogge
Pull request: no

### System Info

Transformers, main branch

### Who can help?

@SaulLu 

### Information

- [ ] The official example scripts
- [ ] My own modified scripts

### Tasks

- [ ] An officially supported task in the `examples` folder (such as GLUE/SQuAD, ...)
- [ ] My own task or dataset (give details below)

### Reproduction

Currently, processors like CLIPProcessor have a model_input_names attribute, but it doesn't have any effect on which keys are outputted in the BatchEncoding.

To reproduce:

```
# install transformers from my branch, see https://github.com/huggingface/transformers/pull/20295
from PIL import Image
import requests
from transformers import GITProcessor

processor = GITProcessor.from_pretrained("nielsr/git-base")

print(processor.model_input_names)
# this prints ['input_ids', 'attention_mask', 'pixel_values']

url = "http://images.cocodataset.org/val2017/000000039769.jpg"
image = Image.open(requests.get(url, stream=True).raw)

inputs = processor(text=["a photo of a cat", "a photo of a dog"], images=image, return_tensors="pt", padding=True)

for key, value in inputs.items():
   print(key, value.shape)
```
This prints:
```
input_ids torch.Size([2, 7])
token_type_ids torch.Size([2, 7])
attention_mask torch.Size([2, 7])
pixel_values torch.Size([1, 3, 224, 224])
``` 
=> as can be seen, token_type_ids are included here, which shouldn't be the case.

In addition, it seems model_input_names doesn't get reflected when pushing a tokenizer to the hub and reloading. To reproduce:
```
from transformers import AutoTokenizer

tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased")

print(tokenizer.model_input_names)

# update model input names (let's say we don't want token type ids)
tokenizer.model_input_names = ['input_ids', 'attention_mask']

tokenizer.push_to_hub("nielsr/test")

# reload
tokenizer = AutoTokenizer.from_pretrained("nielsr/test")
print(tokenizer.model_input_names)
```


### Expected behavior

model_input_names should work appropriately for both tokenizers and processors, making sure only keys which are in this list are included in the BatchEncoding.

Comments:
Also cc'ing @sgugger and @amyeroberts here

There is no generic call method of the processors, like there is for the tokenizers, so to enforce that `model_input_names` only returns the keys you want, it's up to you to have the call method of your processor filter those outputs.

As for the second point, `model_input_names` are linked to an architecture, and as such they are a class variable. They are not supposed to be changed by a user, and it's completely natural that saving/reloading does not save that change.

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.

@amyeroberts would you like to add this functionality at some point? Also shouldn't `tokenizer.model_input_names` for instance work after re-instantiating from the hub?

I am not sure what was unclear in my comment above. This functionality cannot exist since there is no generic call method for the processor mixin.