Add head_mask and decoder_head_mask to FSMT
This PR implements `head_mask` and `decoder_head_mask` for FSMT and it is the follow-up to the open issue #9814. 

**Motivation:** This PR is a part of an endeavour to enable the usage of `head_mask` and `decoder_head_mask` for all encoder-decoder transformers following the recent work on BART-like models (#9569).

<hr>

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

Reviewer: @stas00 
I know than one can add, for example, a line like this
```
# Copied from transformers.models.bart.modeling_bart.BartAttention with Bart->FSMT
```
before `Attention` module in FSMT. However, this does not copy only additions, but the whole module from BART, which is, in this case, undesirable, I guess, as these modules are a little bit different. But maybe there is another way I am not aware of.<|||||>@LysandreJik, @patrickvonplaten - how can we make sure fsmt gets tracked and synced with all the bart-family changes? while the tokenizer is different, the model is ~95% identical.<|||||>as @stancld said, we can do that with some statements of the following kind:

```
# Copied from transformers.models.bart.modeling_bart.BartAttention with Bart->FSMT
```

The difference between the BART and FSMT implementation of the targeted object must only be the "BART" occurrences that change to "FSMT". @sgugger can tell you more about it.<|||||>Thank you, @LysandreJik

I think this is really a question to @patrickvonplaten  - who I remember was planning to refactor FSMT to match what he did for Bart. So if this is still planned, Patrick perhaps you could add this item to the agenda - keeping FSMT in sync with the Bart-family (modeling only - tokenizer is similar to xlm).

So the currently proposed solution can't be used, since Bart diverged since FSMT forked it.

It might help to treat FSMT as Bart with the main difference of it having a dual vocab and no tied weights - and a few layers that are different - but identical otherwise. (again for the model only).<|||||>> I think this is really a question to @patrickvonplaten - who I remember was planning to refactor FSMT to match what he did for Bart. So if this is still planned, Patrick perhaps you could add this item to the agenda - keeping FSMT in sync with the Bart-family (modeling only - tokenizer is similar to xlm).

Yes, the FSTM / ProphetNet refactor is still on my ToDo List (think next week is reasonable). After the refactor I'll try to add as many # Copied from statements to keep the models in sync. Nevertheless, this PR can be merged as it is now!

Great work @stancld