[`Whiper`] add `get_input_embeddings` to `WhisperForAudioClassification`
# What does this PR do?

Fixes: https://github.com/huggingface/peft/issues/173

Fixes: https://github.com/huggingface/transformers/issues/22131

This PR adds `get_input_embeddings` method to `WhisperForAudioClassification` and `WhisperForConditionalGeneration` to avoid some issues such as [here](https://github.com/huggingface/peft/issues/173)

In my understanding `get_input_embeddings` method should return the first module that converts the input to the first hidden states and not necessarly an `nn.Embedding` layer

cc @ArthurZucker @sgugger 
_The documentation is not available anymore as the PR was closed or merged._<|||||>Yes I can confirm the script provided by the user:
```python
from transformers import WhisperFeatureExtractor
from transformers import WhisperTokenizer
from transformers import WhisperProcessor
from transformers import WhisperForAudioClassification

# Select CUDA device index
import os

os.environ["CUDA_VISIBLE_DEVICES"] = "0"
model_name_or_path = "openai/whisper-small"

feature_extractor = WhisperFeatureExtractor.from_pretrained(model_name_or_path)
tokenizer = WhisperTokenizer.from_pretrained(model_name_or_path)
processor = WhisperProcessor.from_pretrained(model_name_or_path)

model = WhisperForAudioClassification.from_pretrained(model_name_or_path, load_in_8bit=True, device_map="auto")

from peft import prepare_model_for_int8_training
model = prepare_model_for_int8_training(model)
```
work perfect now with this fix!<|||||>I am a bit surprised by the fix, as it is not an embedding layer, this kind of break the usages we have for `get_input_embeddings`, which are for example `_resize_token_embeddings` and `tie_weights` which are both incompatible with the Whisper encoder as it does not have an embedding layer. 
So not really sure this is the way to go.
Also, the `test_model_common_attributes` has to be updated
```python 
    # WhisperEncoder has no inputs_embeds and thus the `get_input_embeddings` fn is not implemented
    def test_model_common_attributes(self):
        pass
```
as well as :
```python 
    # input embeds is meaningless for an encoder-only acoustic model
    def test_inputs_embeds(self):
        pass
```
in whisper tests
<|||||>Even if it's not text, the layer converts an input to a hidden size, so it's kind of like an embedding. Not sure if there is a better name for this function but it doesn't shock me to use this for Whisper, esp since peft needs a common API across models.

As for the potential problems in `_resize_token_embeddings` and `tie_weights` I would wait for a user to actually raise an issue on this before giving them more thought. We can always override and add specific error messages.

<|||||>@ArthurZucker Added the common tests and there was an issue when running whisper without `decoder_input_ids` and `decoder_embeds` instead that I fixed. Can you please double check ? Thanks