`BertTokenizer` splits tokens added via `add_tokens(...', special_tokens=False)` to a few subtokens 
Author: alex4321
Pull request: no

## Environment

`!transformers-cli env` output:

- `transformers` version: 4.11.0.dev0
- Platform: Linux-5.4.104+-x86_64-with-Ubuntu-18.04-bionic
- Python version: 3.7.11
- PyTorch version (GPU?): 1.9.0+cu102 (False)
- Tensorflow version (GPU?): 2.6.0 (False)
- Flax version (CPU?/GPU?/TPU?): not installed (NA)
- Jax version: not installed
- JaxLib version: not installed
- Using GPU in script?: no
- Using distributed or parallel set-up in script?: no

## Information

I'm using `BertTokenizer` to process data and train my BERT-based model.

I found that when I add a few "technical" tokens via `tokenizer,add_tokens(token_text, special_tokens=True)` - it still splits added tokens the same way ad before adding them into tokenizer. When I use `tokenizer,add_tokens(token_text, special_tokens=False)` instead - it works properly.

Moreover, when I save the tokenizer with `special_tokens=True`-adding through `tokenizer.save_pretrained(directory_name)` and then load it back - it works properly, instead of just modifying the tokenizer.

There I'll give a sample (you can also see the same sample here - https://colab.research.google.com/drive/1Ufa79vrvdoyee6xiz9WCR7F2UKZuBfS7?usp=sharing ):

```python
from transformers import BertTokenizer


tokenizer_base = BertTokenizer.from_pretrained("bert-base-uncased")
tokenizer_special = BertTokenizer.from_pretrained("bert-base-uncased")
tokenizer_nonspecial = BertTokenizer.from_pretrained("bert-base-uncased")

tokenizer_special.add_tokens('[TITLE]', special_tokens=True)
tokenizer_nonspecial.add_tokens('[TITLE]', special_tokens=False)

# [101, 1031, 2516, 1033, 102]
# so basically, before any modification - it split `[TITLE]` to `1031, 2516, 1033`
print(tokenizer_base('[TITLE]')['input_ids'])

# [101, 1031, 2516, 1033, 102]
# Guess it should give 3 token ids here - yet it gives same ids like `tokenizer_base`
print(tokenizer_special('[TITLE]')['input_ids'])

# [101, 30522, 102]
# So with `.add_tokens('[TITLE]', special_tokens=False)` it maps `[TITLE]` to one token
print(tokenizer_nonspecial('[TITLE]')['input_ids'])

# Guess it should give same result as `tokenizer_special`'s one
# But it gives me `[101, 30522, 102]` instead - like `tokenizer_nonspecial`'s one
tokenizer_special.save_pretrained("pretrained-with-special-flag")
tokenizer_special_from_pretrained = BertTokenizer.from_pretrained("pretrained-with-special-flag")
tokenizer_special_from_pretrained('[TITLE]')['input_ids']
```

## Expected behavior
I expected to see 1 token id for `tokenizer_special` (something like `tokenizer_nonspecial`'s `[101, 30522, 102]`) - or, at least, see that `tokenizer_special_from_pretrained` reproduces `tokenizer_special`'s behavior.

Comments:
This seems a bug that the tokenizing function doesn't consider additional added special tokens. I'll open a PR for the fix.

Basically you can temporarily use the following code to add special tokens you want, documented on the [docs](https://huggingface.co/transformers/main_classes/tokenizer.html#transformers.PreTrainedTokenizer). This will give the correct result.
```
BertTokenizer.from_pretrained("bert-base-uncased", additional_special_tokens=["[TITLE]"])
```