Allow custom head size for self attention in BERT
### Feature request

Right now the `attention_head_size` of BERT self attention is set to hidden_size / num_attention_heads:
https://github.com/huggingface/transformers/blob/855dcae8bb743c3f8f0781742d7fa2fa3aaa3e22/src/transformers/models/bert/modeling_bert.py#L260-L262

However, the `all_head_size` of self attention layer doesn't have to match the `hidden_size` of the model. For example, we may train a deeper model with narrower layers. In fact [this paper](https://arxiv.org/pdf/2106.09650.pdf) found that doing so will increase the model performance with minimal hit on the training and inference speed.

My proposal is to add an option `attention_head_size` to `BertConfig` to allow more flexible model architectures.

### Motivation

Currently, there is no easy way to change the `attention_head_size` without changing the `hidden_size` of the whole model. As a result, it's hard to set up a narrower and deeper or a wider and shallower model.

### Your contribution

I can submit a PR to add an option to `BertConfig` and update the code where needed.
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.