Tied params cleanup
# What does this PR do?

This PR is the first in a series that aims to clean up the content of the variables `_keys_to_ignore_xxx` and the logic of warnings sent to the user resulting from them. In particular unless the model implement a hack like RoBERTa, a trained version with no shared version might not save the decoder...

One use of these variables is to detect "normal" shared weights and have a way to remove all but one of those shared weights for safetensors serialization, but the variable used (`_keys_to_ignore_unexepected`) is very noisy (it contains names of weights that are not shared). This PR introduces a variable `_tied_weights_keys` which will be used for that purpose (and in other places of the cleanup later on). It contains the named of the weights that are tied to other weights and that are safe to dismiss when saving (we won't dismiss them on the torch.save side since `torch.save` won't duplicate memory but will use it for `safetensors`). This PR also introduces a test that checks the content of this variable is correct.

Due to the very large number of models having potential shared weights, this PR limits itself at the introduction of this variable, proper fill for all existing models and test. The rest will follow in subsequent PRs.

cc @Narsil for info
_The documentation is not available anymore as the PR was closed or merged._