Generate: decoder-only models can generate with `inputs_embeds`
# What does this PR do?

2-in-1 PR 🔥 

### 1 - Experimenting with input embeddings
Accepting `.generate()` calls with `inputs_embeds` on decoder-only models is a long-standing request (#6535) -- see [this recent comment ](https://github.com/huggingface/transformers/issues/6535#issuecomment-1353658984) in particular and its reacts.

It has to be added on a per-model basis, and this PR adds the necessary changes for GPT2. Other models will throw an informative exception if the user passes `inputs_embeds`, asking them to check this PR and implement the same pattern on the model they want to use it with 🤗 

Please note that it is still expected that the user passes `input_ids`, i.e.
```
outputs = model.generate(input_ids, inputs_embeds=inputs_embeds)
```
This is because decoder-only models expect the prompt to be present in the output, and this is the only way to preserve it! `input_ids` can also be omitted and, in that case, the output won't contain the prompt.

### 2 - BLIP 2 (cc @NielsRogge)

This change is a soft-requirement for BLIP 2. The alternatives to add BLIP 2 are:
1. Support `.generate()` with `inputs_embeds` on decoder-only models
2. Change OPT's reference implementation to accept a new kwarg (`query_embeds`, that gets appended to the embeddings of the `input_ids`)

Option 1, this PR, seems like a better option according to our library philosophy :)
_The documentation is not available anymore as the PR was closed or merged._