Clean up data collators and datasets
# What does this PR do?

This PR cleans a bit the `DataCollatorForLanguageModeling` by:
- making sure it keeps additional labels (such a next sentence labels)
- use the `tokenizer.pad` function when possible, rewrite the function that was doing the padding when it's not (to handle padding on the left as well as the right side)
- take advantage of the `special_tokens_mask` that the tokenizer can return, to avoid unnecessary conversions tensor -> list -> tensor again

As a result it deprecates `DataCollatorForSOP` (which can be replaced by `DataCollatorForLanguageModeling`) and changes the elements of `TextDatasetForNextSentencePrediction` to work with `DataCollatorForLanguageModeling`. That dataset change renders `DataCollatorForNextSentencePrediction` unusable, so it's removed (breaking change, though this is relatively contained, users that were using it should just use `DataCollatorForLanguageModeling` instead).

Tests are adapted to check `DataCollatorForLanguageModeling` does work for all those tasks.

In passing, all text datasets get their deprecation warning as we are now encouraging users to move the datasets library.
