Data collator for token classification
# What does this PR do?

This PR adds a `DataCollatorForTokenClassification`, very similar to `DataCollatorWithPadding` but whose job is to pad the labels to the same size as the inputs.
In passing, it adds tests of `DataCollatorWithPadding` and cleans all the tests of various data collators that were marked as slow because they required a pretrained tokenizer. For the unit testing, no real tokenizer is needed since we just need the pas/mask token.
I just tried it, and noticed that it doesn't work if `features` is `List[Dict[str, torch.Tensor]]`,
because `tokenizer.pad()` will set `return_tensors` to `pt` if `input_ids` is `torch.Tensor` and `return_tensors` is `None`.

For example my dataset looked like this.
```python
def  __getitem__(self, i):                                                                  
       return {k: torch.tensor(v, dtype=torch.long) for k,v in self.examples[i].items()}                     
```
Changing to this solves the problem.
```python
def  __getitem__(self, i):                                                                  
       return self.examples[i]      
```

Maybe I should have always used this and leave it to collator to tensorize the features.<|||||>Will have look. In general, yes it's better to have your examples be the results of the tokenization (so `Dict[str, List[int]]`) and let the data collator handles the conversion to tensors.