Fix special tokens not correctly tokenized
# What does this PR do?

Fixes #13483.

I think this is a quite complex issue. The purpose of `unique_no_split_tokens` in `tokenization_utils.py` and `all_special_tokens` in `tokenization_utils_base.py` seems ambiguous as they all store special tokens that don't want to be splitted or lower_cased. This two separated variables may result in a hard maintainable code. I'm guessing this is probably due to the workaround for FastTokenizers' functionality.

Additionally, should we resolve this TODO?

https://github.com/huggingface/transformers/blob/c37573806ab3526dd805c49cbe2489ad4d68a9d7/src/transformers/tokenization_utils.py#L275-L282


## 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.

@sgugger @LysandreJik 
A test has been added. Thanks for the review!