QuestionAnsweringPipeline top_k returns single result
### System Info

- `transformers` version: 4.24.0
- Platform: Linux-5.15.0-1025-gcp-x86_64-with-glibc2.31
- Python version: 3.9.15
- Huggingface_hub version: 0.10.1
- PyTorch version (GPU?): 1.9.0+cu111 (False)
- Tensorflow version (GPU?): not installed (NA)
- Flax version (CPU?/GPU?/TPU?): not installed (NA)
- Jax version: not installed
- JaxLib version: not installed
- Using GPU in script?: Yes: tesla T4
- Using distributed or parallel set-up in script?: No


### Who can help?

@Narsil

### Information

- [ ] The official example scripts
- [X] My own modified scripts

### Tasks

- [ ] An officially supported task in the `examples` folder (such as GLUE/SQuAD, ...)
- [X] My own task or dataset (give details below)

### Reproduction

When using a QuestionAnsweringPipeline with the the `top_k` parameter set to a number greater than 1, the model can still return a single answer in the form of a dictionary. 

Example to reproduce bug:

```[python]
from transformers import AutoModelForQuestionAnswering, AutoTokenizer, QuestionAnsweringPipeline

pipeline = QuestionAnsweringPipeline(
    model=AutoModelForQuestionAnswering.from_pretrained("distilbert-base-cased-distilled-squad"),
    tokenizer=AutoTokenizer.from_pretrained("distilbert-base-cased-distilled-squad")
)

pipeline([{
    "context": " 1 ",
    "question": "What is Anne's age?"
}], top_k=10)
``` 

### Expected behavior

When the `top_k` parameter, I would expect that the call to the model returns a list containing the best predictions up to the tenth, when possible. If the model only outputs one answer, I would expect this answer to be within a list. 

When there are no possible answer, the returned value is an empty list. When there are multiple answers, the returned value is also a list. Outputting a dictionary creates an edge case that needs to be handled when, for example, iterating over the outputs of the model 
You are entirely correct to wish for it.

The current behavior is linked to our commitment to not break things. 

If you actually check out the code, you'll see this is an exception because there's only 1 returned value (Because only 1 return value is possible).
https://github.com/huggingface/transformers/blob/main/src/transformers/pipelines/question_answering.py#L596-L597
There's actually another one: https://github.com/huggingface/transformers/blob/main/src/transformers/pipelines/question_answering.py#L391-L392

Since we're not breaking things, and this pipeline was written a long time ago, it was not necessarily aligned with other pipelines. So these quircks are unfortunately necessary.

This is the one thing I would like to modify in V5 (cleanup pipelines return types to make them extremely consistent).

I hope you understand the current state of things. Not sure if there's anything to be done about it.