[tokenizers] Several small improvements and bug fixes
Various improvements for tokenizers:
- Avoid recursion loop for special tokens id look-up in Fast tokenizers
- Fix #5232 by removing the unsupported method `convert_tokens_to_string` for Fast tokenizers
- Fix #5256 by aligning the behavior of the slow tokenizer on the behavior of the fast tokenizer for special tokens inside the input.

A little bit of background on the modifications in Roberta tokenizer:
We now align the behavior of the byte-level BPE tokenizer to the Fast version which is the most consistent with the way the original tokenizer behaved: all the special tokens are assumed to not have a prefix space so the user can control whether he wants to have a space or not in the string.

We do an exception for the mask token in Roberta which is assumed to represent a word and thus has a prefix space by default (can be overided at initialization). This is necessary to be able to use Roberta in filled-mask completion easily.

This is already built-in for the Fast tokenizer. Here I update the slow tokenizer to have this behavior using the newly introduced `AddedToken` which lets you control the space behaviors of the special tokens.

# [Codecov](https://codecov.io/gh/huggingface/transformers/pull/5287?src=pr&el=h1) Report
> Merging [#5287](https://codecov.io/gh/huggingface/transformers/pull/5287?src=pr&el=desc) into [master](https://codecov.io/gh/huggingface/transformers/commit/24f46ea3f3e5006ca38735306753a846a0823174&el=desc) will **increase** coverage by `0.00%`.
> The diff coverage is `97.14%`.

[![Impacted file tree graph](https://codecov.io/gh/huggingface/transformers/pull/5287/graphs/tree.svg?width=650&height=150&src=pr&token=9qOlN6Hb1c)](https://codecov.io/gh/huggingface/transformers/pull/5287?src=pr&el=tree)

```diff
@@           Coverage Diff           @@
##           master    #5287   +/-   ##
=======================================
  Coverage   79.08%   79.08%           
=======================================
  Files         138      138           
  Lines       24078    24093   +15     
=======================================
+ Hits        19041    19054   +13     
- Misses       5037     5039    +2     
```


| [Impacted Files](https://codecov.io/gh/huggingface/transformers/pull/5287?src=pr&el=tree) | Coverage Δ | |
|---|---|---|
| [src/transformers/tokenization\_utils\_base.py](https://codecov.io/gh/huggingface/transformers/pull/5287/diff?src=pr&el=tree#diff-c3JjL3RyYW5zZm9ybWVycy90b2tlbml6YXRpb25fdXRpbHNfYmFzZS5weQ==) | `93.15% <94.44%> (-0.01%)` | :arrow_down: |
| [src/transformers/tokenization\_gpt2.py](https://codecov.io/gh/huggingface/transformers/pull/5287/diff?src=pr&el=tree#diff-c3JjL3RyYW5zZm9ybWVycy90b2tlbml6YXRpb25fZ3B0Mi5weQ==) | `97.18% <100.00%> (+0.06%)` | :arrow_up: |
| [src/transformers/tokenization\_roberta.py](https://codecov.io/gh/huggingface/transformers/pull/5287/diff?src=pr&el=tree#diff-c3JjL3RyYW5zZm9ybWVycy90b2tlbml6YXRpb25fcm9iZXJ0YS5weQ==) | `94.52% <100.00%> (ø)` | |
| [src/transformers/tokenization\_utils\_fast.py](https://codecov.io/gh/huggingface/transformers/pull/5287/diff?src=pr&el=tree#diff-c3JjL3RyYW5zZm9ybWVycy90b2tlbml6YXRpb25fdXRpbHNfZmFzdC5weQ==) | `94.20% <100.00%> (-0.09%)` | :arrow_down: |
| [src/transformers/tokenization\_utils.py](https://codecov.io/gh/huggingface/transformers/pull/5287/diff?src=pr&el=tree#diff-c3JjL3RyYW5zZm9ybWVycy90b2tlbml6YXRpb25fdXRpbHMucHk=) | `91.16% <0.00%> (-0.32%)` | :arrow_down: |

------

[Continue to review full report at Codecov](https://codecov.io/gh/huggingface/transformers/pull/5287?src=pr&el=continue).
> **Legend** - [Click here to learn more](https://docs.codecov.io/docs/codecov-delta)
> `Δ = absolute <relative> (impact)`, `ø = not affected`, `? = missing data`
> Powered by [Codecov](https://codecov.io/gh/huggingface/transformers/pull/5287?src=pr&el=footer). Last update [24f46ea...209dcc7](https://codecov.io/gh/huggingface/transformers/pull/5287?src=pr&el=lastupdated). Read the [comment docs](https://docs.codecov.io/docs/pull-request-comments).
