Fixing tokenizer when `transformers` is installed without `tokenizers`
Author: urialon
Pull request: yes

# What does this PR do?

This PR fixes the tokenization of the `
` and `
` tokens, when `transformers` is installed but `tokenizers` is not installed, fixing the string representation of the `AddedToken` class.

Using `transformers` _without_ `tokenizers` installed results in the following problem:
```
import transformers
tokenizer = transformers.AutoTokenizer.from_pretrained('facebook/bart-large-mnli')

print(tokenizer.convert_tokens_to_ids(['
', 'a', '
']))
print(tokenizer.encode('a'))
```
Prints:
```
>>> [0, 102, 2]
>>> [50265, 102, 50266]
```

In other words, the tokenizer knows that the correct IDs for `
` and `
` are `0` and `2`, but when encoding an arbitrary string, it adds the new IDs `50265` and `50266` (which are not known to the model!).

Using this solution, the tokenizer does *not* add additional token IDs 50265 and up, because it recognizes them as existing already in IDs 0-3.
Then, encoding a string using a tokenizer results in adding `0` and `2` as the `
` and `
` tokens.
The two lines of:

```
print(tokenizer.convert_tokens_to_ids(['
', 'a', '
']))
print(tokenizer.encode('a'))
```
result in the same output of `[0, 102, 2]`, as expected.

## Before submitting
- [ ] This PR fixes a typo or improves the docs (you can dismiss the other checks if that's the case).
- [x] Did you read the [contributor guideline](https://github.com/huggingface/transformers/blob/main/CONTRIBUTING.md#start-contributing-pull-requests),
      Pull Request section?
- [ ] Was this discussed/approved via a Github issue or the [forum](https://discuss.huggingface.co/)? Please add a link
      to it if that's the case.
- [ ] Did you make sure to update the documentation with your changes? Here are the
      [documentation guidelines](https://github.com/huggingface/transformers/tree/main/docs), and
      [here are tips on formatting docstrings](https://github.com/huggingface/transformers/tree/main/docs#writing-source-documentation).
- [ ] Did you write any new necessary tests?


## Who can review?

Anyone in the community is free to review the PR once the tests have passed. Feel free to tag
members/contributors who may be interested in your PR.

@ArthurZucker @ydshieh @hvaara @amyeroberts 

Comments:
Thanks @ArthurZucker , I added a `__repr__` function and `repr=True` to the `dataclass` definition.

Hi @ArthurZucker ,
I reverted the change to the `__repr__` function and to the `dataclass` decorator.

I'm an not sure that the `__repr__` behavior is correct. When I load a Bart tokenizer and print it:
```
>>> tokenizer
BartTokenizerFast(name_or_path='facebook/bart-large-mnli', vocab_size=50265, model_max_length=1024, is_fast=True, padding_side='right', truncation_side='right', special_tokens={'bos_token': '
', 'eos_token': '
', 'unk_token': '<unk>', 'sep_token': '
', 'pad_token': '<pad>', 'cls_token': '
', 'mask_token': AddedToken("<mask>", rstrip=False, lstrip=True, single_word=False, normalized=False)}, clean_up_tokenization_spaces=True)
```

Most of the special tokens are strings rather than `AddedToken`s. 

So, I am keeping only the `__str__` function as it fixes an existing bug.
Fixing the `__repr__` function is related but not necessarily coupled with this PR.

Thanks,
Uri

The docs for this PR live [here](https://moon-ci-docs.huggingface.co/docs/transformers/pr_26236). All of your documentation changes will be reflected on that endpoint.

Thanks for contributing this fix back to upstream, @urialon!