[WIP] deleted special tokens as attributes from model config
Given our conversation in #3011 , I thought about deleting all model special config attributes to make sure that no data is duplicated between the tokenizer of a model and the model. 

There are two instances where config special attributes were used (e.g. self.config.pad_token_id)

1. the generate() function. But the generate function also takes all those tokens as attributes, so it should not at all rely on self.config.pad_token_id. This one is trivial to fix.

2. the bart model. It seems like the pad_token_id is actually an integral part of the bart model itself, so to me it seems very hard to disentangle the pad_token_id from the bart model. 

I see three options:

1) Leave the code as it is and leave default attributes self.config.pad_token_id, self.config.bos_token_id, self.config.eos_token_id = None in the PretrainedConfig class.

2) Remove the self.config.pad_token_id, ... from the PretrainedConfig class, make the generate function independent of those variables, but add those variables to the BartConfig only.

3) Make the models completely independent from all special tokens. This probably would mean that the bart model class needs quite a lot of changes. 

I tend to option 2) or 3). I like the idea of separation token ids from internal model behavior completely, but I cannot really estimate whether this is feasible for Bart (@sshleifer you probably have a better opinion on this).

What do you think? @LysandreJik , @julien-c , @thomwolf , @sshleifer  
Not feasible for bart at the moment, sadly.<|||||>As mentioned in #3011, I think #3011 is the way to go.