improve saving strategy of sentencepiece tokenizer
# What does this PR do?

The slow tokenizer  based on sentencepiece until now needed to access the original files (like `xxx/spiece.model`) that had been used to initialize them when we wanted to save them.

Since the version `0.1.91` of sentencepiece, there is a new method `serialized_model_proto` available which allows to create directly the sentence piece model file from the python object used by our tokenizer. 

This PR proposes to modify all the tokenizers based on sentencepiece to use this new method if the original file(s) is not be accessible anymore. A new test also test this new capability.

## Additional comments

In this PR I also modified:
- `BartphoTokenizer` so that some special tokens are not hardcoded anymore
- `M2M100Tokenizer` and `MarianTokenizer`, so that their saving method looks more like the other tokenizers

## Motivation

I think that when it is possible it is good to be able to save our object even if some files used during the initialization do not exist anymore. 

Moreover, this addition allows me to make easier the creation of other tests (like the test of [this PR](https://github.com/huggingface/transformers/pull/15319)).

## Who can review?

Anyone in the community is free to review the PR once the tests have passed. I would in particular love to read your thoughts @LysandreJik or @sgugger

<!-- Your PR will be replied to more quickly if you can figure out the right person to tag with @

 If you know how to use git blame, that is the easiest way, otherwise, here is a rough guide of **who to tag**.
 Please tag fewer than 3 people.

Models:

- albert, bert, xlm: @LysandreJik
- blenderbot, bart, marian, pegasus, encoderdecoder,  t5: @patrickvonplaten, @patil-suraj
- longformer, reformer, transfoxl, xlnet: @patrickvonplaten
- fsmt: @stas00
- funnel: @sgugger
- gpt2: @patrickvonplaten, @LysandreJik
- rag: @patrickvonplaten, @lhoestq
- tensorflow: @LysandreJik

Library:

- benchmarks: @patrickvonplaten
- deepspeed: @stas00
- ray/raytune: @richardliaw, @amogkam
- text generation: @patrickvonplaten
- tokenizers: @n1t0, @LysandreJik
- trainer: @sgugger
- pipelines: @LysandreJik

Documentation: @sgugger

HF projects:

- datasets: [different repo](https://github.com/huggingface/datasets)
- rust tokenizers: [different repo](https://github.com/huggingface/tokenizers)

Examples:

- maintained examples (not research project or legacy): @sgugger, @patil-suraj
- research_projects/bert-loses-patience: @JetRunner
- research_projects/distillation: @VictorSanh

 -->

_The documentation is not available anymore as the PR was closed or merged._