Support for custom data_collator in Trainer.train() with datasets.Dataset
# 🚀 Feature request

<!-- A clear and concise description of the feature proposal.
     Please provide a link to the paper and code in case they exist. -->
Currently (transformers==3.3.1) Trainer removes unknown columns (not present in forward method of a model) from datasets.Dataset object. It prevents using custom DataCollator in `.train` method since it doesn't have columns that one would want to use. 

I would be interested in an option to not remove unknown columns and allow user to handle them in DataCollator (or provide their own DataLoaders to the train method).

## Motivation
The example code I was trying to use for training looks like this:
```
from typing import List

from datasets import load_dataset
from transformers import RobertaForSequenceClassification, RobertaTokenizer, Trainer


tokenizer = RobertaTokenizer.from_pretrained('roberta-base')
model = RobertaForSequenceClassification.from_pretrained('roberta-base', return_dict=True)

train_dataset = load_dataset("yelp_polarity", split="train")
val_dataset = load_dataset("yelp_polarity", split="test")

class DataCollator:
    def __init__(self, tokenizer):
        self.tokenizer = tokenizer
        
    def __call__(self, examples: List[dict]):
        labels = [example['label'] for example in examples]
        texts = [example['text'] for example in examples]
        tokenizer_output = self.tokenizer(texts, truncation=True, padding=True)
        tokenizer_output['input_ids'] = torch.tensor(tokenizer_output['input_ids'])
        tokenizer_output['attention_mask'] = torch.tensor(tokenizer_output['attention_mask'])
        output_dict = dict(labels=labels, **tokenizer_output)
        return output_dict
    
data_collator = DataCollator(tokenizer)

trainer = Trainer(
    model=model,                   # the instantiated 🤗 Transformers model to be trained
    train_dataset=train_dataset,   # training dataset
    eval_dataset=val_dataset,      # evaluation dataset
    data_collator=data_collator    # problem with removing unwanted columns by transformers.Trainer code. Doesn't really work, is it a bug?
)

trainer.train()
```
(with `trainer.train()` not working)

<!-- Please outline the motivation for the proposal. Is your feature request
     related to a problem? e.g., I'm always frustrated when [...]. If this is related
     to another GitHub issue, please link here too. -->

## Your contribution
Before trying to fix things, I would be interested to learn if there is a suggested alternative way of doing that? 

<!-- Is there any way that you could help, e.g. by submitting a PR?
     Make sure to read the CONTRIBUTING.MD readme:
     https://github.com/huggingface/transformers/blob/master/CONTRIBUTING.md -->

Just set `remove_unused_columns=False` in your `TrainingArguments` to disable that behavior.<|||||>Great, I completely missed that! Thanks.