Tokenizer added special token attributes missing
It might not be a bug but I think it would be useful and more consitent behaviour if tokenizers could maintain the added special tokens as attributes after saving and loading a tokenizer. See the following example.

```python
if 'added_tokens.json' in os.listdir('.'):
    # loading the saved extended tokenizer
    # and trying to reach the added special token
    # through the attribute raises an error
    tokenizer = XLNetTokenizer.from_pretrained('.')
    print(tokenizer.custom_token)
else:
    # loading a base tokenizer and extending it with special
    # token which is added to the instance attributes
    tokenizer = XLNetTokenizer.from_pretrained('xlnet-base-cased')
    tokenizer.add_special_tokens({'custom_token': '<custom>'})
    # saving the extended tokenizer
    tokenizer.save_pretrained('.')
    print(tokenizer.custom_token)
```

**1st run result:**
```text
<custom>
```

**2nd run result:**
```text
Traceback (most recent call last):
  File "src/_test.py", line 19, in <module>
    main()
  File "src/_test.py", line 9, in main
    print(tokenizer.custom_token)
AttributeError: 'XLNetTokenizer' object has no attribute 'custom_token'
```
The framework has been updated to store all additional special tokens in `additional_special_tokens` list and custom tokens are no longer available through class attributes.