Fix usage of head masks by PT encoder-decoder models' `generate()` function
This PR adds missing arguments `head_mask`, `decoder_head_mask` and `cross_attn_head_mask` into `prepare_inputs_for_generation` function of **PyTorch encoder-decoder models** so that these args will be used during the generation when `generate()` function is called.

EDIT: Need to fix the new test for ProphetNet

<hr>

### Example

```python
out = bart.generate(input_ids, ...)
tokenizer.decode(out[0], ...)
```
```
>>> 'The Eiffel Tower in Paris has been officially opened to the public.'
```


**Behaviour before the PR:**

```python
out = bart.generate(input_ids, decoder_head_mask=decoder_head_mask, ...)
tokenizer.decode(out[0], ...)
```

```diff
- >>> 'The Eiffel Tower in Paris has been officially opened to the public.'
```

**Behaviour after the PR:**

```python
out = bart.generate(input_ids, decoder_head_mask=decoder_head_mask, ...)
tokenizer.decode(out[0], ...)
```
```diff
+ >>> 'The Eiffel Tower in Paris has been officially opened to the public for the first time since it was completed in 1903.'
```


<hr>

**Reviewers:** @patrickvonplaten
Hey @stancld,

Thanks a lot for this contribution! Could we add one test to verify that generation works with head_mask for all encoder-decoder models? 

I think it could be added to `test_generation_utils.py` <|||||>Hey @patrickvonplaten, I've added one test. At this moment, there are two little issues I'm gonna handle later today so that all encoder-decoder models will pass this new test.<|||||>Hi @patrickvonplaten, sorry for being silent for a while as I've been a bit too busy. As you suggest, I skip the test for `ProphetNetForConditionalGeneration` model and now all the tests pass :)