tokenizers add_token bug
The way `add_token` is implemented results is problematic tokenization when added tokens are substring of each other. Example:
```
from transformers import AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("google/mt5-large")

tokenizer.add_tokens(['my_token_1', 'my_token_12', 'my_token_123'])

tokenizer.tokenize("my_token_1 and my_token_12 and my_token_123")
```

output:

```
['my_token_1',
 '▁and',
 '▁',
 'my_token_1',
 '▁2',
 '▁and',
 '▁',
 'my_token_1',
 '▁23']
```

Because of implementation (i.e., breaking text on added tokens), adding new tokens in the reversed order (i.e., `tokenizer.add_tokens(['my_token_123', 'my_token_12', 'my_token_1'])`) results in the correct tokenization. So one solution is always order the added tokens in reversed.
Pinging @n1t0 and @SaulLu for advice<|||||>This issue has been automatically marked as stale because it has not had recent activity. If you think this still needs to be addressed please comment on this thread.

Please note that issues that do not follow the [contributing guidelines](https://github.com/huggingface/transformers/blob/master/CONTRIBUTING.md) are likely to be ignored.