[v5] 🚨Refactor subprocessors handling in processors
Author: yonigozlan
Pull request: yes

# What does this PR do?

Refactor the handling of subprocessors in processors.
- Main change is that we deduce the subprocessors from the init signature instead of having to manually add "subprocessor_class" attributes.
- This means we can remove all `attributes` attribute in processors, along with all `"subprocessor"_class` attributes
- We also now have one source of truth to determine which image processor will be loaded by default (the Auto sub processors classes)

This PR is a requirement for https://github.com/huggingface/transformers/pull/41388, as otherwise we'd have to manually check that all `image_processor_class` attributes are set to "AutoImageProcessor"

Cc @ArthurZucker @Cyrilvallez @zucchini-nlp @molbap (and also @ydshieh as this might break some parts of the CI 👀, although I checked that all processor tests are passing still, except kosmos2.5 but that's because of a PIL.UnidentifiedImageError ;)). 

Update: I'm seeing some tests breaking in `test_processor_auto.py`, related to registering custom processors and subprocessors in transformers. How used is this and can we break it slightly for v5? 👀
Update 2: It looks like it's not really a problem. The only edge case that will break is if a custom processor was defined by inheriting from `ProcessorMixin`, without overriding `__init__`. ProcessorMixin used to have  "feature_extractor" and "tokenizer" attributes by default, now it doesn't (which makes more sense imo)
Fixed the tests by modifying the custom processor on the hub to add an init.

🚨Breaking change:
- If a model was saved with a processor, and another processor is used to load the checkpoint, the subprocessors loaded used to be the ones hardcoded in the other processor class definition, but now they will be the ones that were saved originally.
For example:
```python
processor = OwlViTProcessor.from_pretrained("some_owlv2_checkpoint")
print(type(processor.image_processor)
# Used to be OwlViTImageProcessor, will now be Owlv2ImageProcessor, which makes more sense in my opinion
```


Comments:
Do you want me to trigger a full CI for this PR?

Better to have it , @zucchini-nlp can confirm it's helpful 😅 . 

Let me know once it's ready (and you want me to trigger)

I think you can now @ydshieh , thank you!

The docs for this PR live [here](https://moon-ci-docs.huggingface.co/docs/transformers/pr_41633). All of your documentation changes will be reflected on that endpoint. The docs are available until 30 days after the last update.

> Update: I'm seeing some tests breaking in test_processor_auto.py, related to registering custom processors and subprocessors in transformers. How used is this and can we break it slightly for v5? 👀

Didn't see this at first. Looking at the test and remote code, I don't think that will be very breaking. Haven't seen any model in the hub without an `__init__` until today, so prob we can simply adjust the remote code in test repo

> I think you can now @ydshieh , thank you!

CircleCI still some failing jobs, so I will wait until it's ✅ here (ping me when it's ✅ 🙏 )

Ah sorry about that @ydshieh , it should be good now!


ok, i will trigger, but only share the reports on Monday. 

> ok, i will trigger, but only share the reports on Monday.

Sounds good thanks!

**[For maintainers]** Suggested jobs to run (before merge)

run-slow: align, altclip, aria, auto, aya_vision, bark, blip, blip_2, bridgetower, bros, chameleon, chinese_clip, clap, clip, clipseg, clvp