Add methods to update and verify out_features out_indices
Author: amyeroberts
Pull request: yes

# What does this PR do?

`out_features` and `out_indices` are two parameters which control the behaviour of a backbone. `out_indices` was recently [added as a config argument](https://github.com/huggingface/transformers/pull/22493) for the future addition of timm backbones (otherwise the timm backbone requires loading in, inspecting the feature names, then mapping to equivalent names in transfomers). 

It's necessary that `out_features` and `out_indices` are consistent i.e. that they both map the same stage names. Otherwise there is conflicting sources of truth in the config.  At the moment, `out_features` and `out_indices` are set and verified [within the config](https://github.com/huggingface/transformers/blob/88399476c3892435395618ed37993176dbb0de73/src/transformers/models/swin/configuration_swin.py#L162-L189). 

For backwards compatibility, backbone models can be created even if their config only has `out_features` set e.g. here for [SwinBackbone](https://github.com/huggingface/transformers/blob/88399476c3892435395618ed37993176dbb0de73/src/transformers/models/swin/modeling_swin.py#L1268).

However, it's possible to modify the config after creation e.g. [like here in the DINAT tests](https://github.com/huggingface/transformers/blob/88399476c3892435395618ed37993176dbb0de73/tests/models/dinat/test_modeling_dinat.py#L178), resulting in a mismatch between `out_features` and `out_indices`. 


This PR resolves two issues by creating a single backbone utils module. 
1. Ensures `out_features` or `out_indices` attribute can only be updated using `set_out_features` and `set_out_indices` methods respectively. These perform argument checks and updates the complementary feature. 
2. Remove repeated `out_features` and `out_indices` getting and verification logic between configurations and backbone models


## Before submitting
- [ ] This PR fixes a typo or improves the docs (you can dismiss the other checks if that's the case).
- [x] Did you read the [contributor guideline](https://github.com/huggingface/transformers/blob/main/CONTRIBUTING.md#start-contributing-pull-requests),
      Pull Request section?
- [ ] Was this discussed/approved via a Github issue or the [forum](https://discuss.huggingface.co/)? Please add a link
      to it if that's the case.
- [ ] Did you make sure to update the documentation with your changes? Here are the
      [documentation guidelines](https://github.com/huggingface/transformers/tree/main/docs), and
      [here are tips on formatting docstrings](https://github.com/huggingface/transformers/tree/main/docs#writing-source-documentation).
- [x] Did you write any new necessary tests?

Comments:
_The documentation is not available anymore as the PR was closed or merged._

@ydshieh @sgugger  I've updated with the setter tip - all looks a lot tidier! Let me know if the changes are OK. 

In the spirit of not doing things magically, when setting the `out_features` and `out_indices` should I have a `logger.warning_once` notifying the user the other property is also updated? 

Thanks for the iteration. I don't feel strong to `logger.warning_once` when setting one property (as it's mentioned in the docstring), but it's a good thought! Let's see what Sylvain thinks.