Easily train a new fast tokenizer from a given one
# What does this PR do?

This PR does two different things at the same time:
- it allows to instantiate a subclass of a `PreTrainedTokenizerFast` with just the tokenizer object by making arguments like vocab or merges optional (only done for three models here but can complete if the design is accepted)
- adds a method to train a new fast tokenizer from an existing one, using the same normalizer, pre-tokenizers and post-processors.

With this done, one can do:
```
from transformers import AutoTokenizer

checkpoint = "bert-base-cased" # or any checkpoint that has a fast tokenizer.
tokenizer = AutoTokenizer.from_pretrained(checkpoint)
assert tokenizer.is_fast, "This only works for fast tokenizers."

# Should be a generator of list of texts.
training_corpus = [
    ["This is the first sentence.", "This is the second one."],
    ["This sentence (contains #) over symbols and numbers 12 3.", "But not this one."],
]
new_tokenizer = tokenizer.train_new_from_iterator(training_corpus, vocab_size=25000)
```
The new tokenizer can then be used, saved, pushed to the hub. It has the same type as `tokenizer`.
Failure is spurious, so merging!