Add tokenizer to Trainer
Author: sgugger
Pull request: yes

Not entirely sure about this change as there is a trade-off API complexity/ease of use.

This PR adds `tokenizer` as an optional argument to `Trainer` (if this is approved, will do the same for `TFTrainer`, I have a few recent changes to port there but was mainly waiting for @jplu to be back from vacation to make the two APIs on par).

The benefit is that:
- we can have a smart default `data_collator` that will automatically pad examples if the tokenizer is provided, so the user doesn't have to learn about data_collators for simple examples.
- we can save the tokenizer along the model directly inside `Trainer` for the intermediary checkpoints, so it a checkpoint folder can be used directly with our scripts when resuming an interrupted training.

As for the bad part, it's just that it adds a new argument to `Trainer`.

Comments:
# [Codecov](https://codecov.io/gh/huggingface/transformers/pull/6689?src=pr&el=h1) Report
> Merging [#6689](https://codecov.io/gh/huggingface/transformers/pull/6689?src=pr&el=desc) into [master](https://codecov.io/gh/huggingface/transformers/commit/abc0202194674ae5e241e547f3af34b4226bdc72?el=desc) will **decrease** coverage by `1.73%`.
> The diff coverage is `55.55%`.

[![Impacted file tree graph](https://codecov.io/gh/huggingface/transformers/pull/6689/graphs/tree.svg?width=650&height=150&src=pr&token=9qOlN6Hb1c)](https://codecov.io/gh/huggingface/transformers/pull/6689?src=pr&el=tree)

```diff
@@            Coverage Diff             @@
##           master    #6689      +/-   ##
==========================================
- Coverage   78.98%   77.24%   -1.74%     
==========================================
  Files         156      156              
  Lines       28398    28405       +7     
==========================================
- Hits        22429    21941     -488     
- Misses       5969     6464     +495     
```


| [Impacted Files](https://codecov.io/gh/huggingface/transformers/pull/6689?src=pr&el=tree) | Coverage Δ | |
|---|---|---|
| [src/transformers/trainer.py](https://codecov.io/gh/huggingface/transformers/pull/6689/diff?src=pr&el=tree#diff-c3JjL3RyYW5zZm9ybWVycy90cmFpbmVyLnB5) | `53.66% <55.55%> (-0.13%)` | :arrow_down: |
| [src/transformers/modeling\_tf\_albert.py](https://codecov.io/gh/huggingface/transformers/pull/6689/diff?src=pr&el=tree#diff-c3JjL3RyYW5zZm9ybWVycy9tb2RlbGluZ190Zl9hbGJlcnQucHk=) | `21.47% <0.00%> (-69.44%)` | :arrow_down: |
| [src/transformers/tokenization\_xlm.py](https://codecov.io/gh/huggingface/transformers/pull/6689/diff?src=pr&el=tree#diff-c3JjL3RyYW5zZm9ybWVycy90b2tlbml6YXRpb25feGxtLnB5) | `16.26% <0.00%> (-66.67%)` | :arrow_down: |
| [src/transformers/pipelines.py](https://codecov.io/gh/huggingface/transformers/pull/6689/diff?src=pr&el=tree#diff-c3JjL3RyYW5zZm9ybWVycy9waXBlbGluZXMucHk=) | `25.63% <0.00%> (-54.32%)` | :arrow_down: |
| [src/transformers/optimization.py](https://codecov.io/gh/huggingface/transformers/pull/6689/diff?src=pr&el=tree#diff-c3JjL3RyYW5zZm9ybWVycy9vcHRpbWl6YXRpb24ucHk=) | `58.88% <0.00%> (-36.67%)` | :arrow_down: |
| [src/transformers/modeling\_tf\_gpt2.py](https://codecov.io/gh/huggingface/transformers/pull/6689/diff?src=pr&el=tree#diff-c3JjL3RyYW5zZm9ybWVycy9tb2RlbGluZ190Zl9ncHQyLnB5) | `65.68% <0.00%> (-29.33%)` | :arrow_down: |
| [src/transformers/optimization\_tf.py](https://codecov.io/gh/huggingface/transformers/pull/6689/diff?src=pr&el=tree#diff-c3JjL3RyYW5zZm9ybWVycy9vcHRpbWl6YXRpb25fdGYucHk=) | `33.33% <0.00%> (-24.33%)` | :arrow_down: |
| [src/transformers/modeling\_tf\_auto.py](https://codecov.io/gh/huggingface/transformers/pull/6689/diff?src=pr&el=tree#diff-c3JjL3RyYW5zZm9ybWVycy9tb2RlbGluZ190Zl9hdXRvLnB5) | `48.79% <0.00%> (-18.08%)` | :arrow_down: |
| [src/transformers/data/processors/squad.py](https://codecov.io/gh/huggingface/transformers/pull/6689/diff?src=pr&el=tree#diff-c3JjL3RyYW5zZm9ybWVycy9kYXRhL3Byb2Nlc3NvcnMvc3F1YWQucHk=) | `13.76% <0.00%> (-14.38%)` | :arrow_down: |
| [src/transformers/modeling\_auto.py](https://codecov.io/gh/huggingface/transformers/pull/6689/diff?src=pr&el=tree#diff-c3JjL3RyYW5zZm9ybWVycy9tb2RlbGluZ19hdXRvLnB5) | `64.36% <0.00%> (-14.37%)` | :arrow_down: |
| ... and [13 more](https://codecov.io/gh/huggingface/transformers/pull/6689/diff?src=pr&el=tree-more) | |

------

[Continue to review full report at Codecov](https://codecov.io/gh/huggingface/transformers/pull/6689?src=pr&el=continue).
> **Legend** - [Click here to learn more](https://docs.codecov.io/docs/codecov-delta)
> `Δ = absolute <relative> (impact)`, `ø = not affected`, `? = missing data`
> Powered by [Codecov](https://codecov.io/gh/huggingface/transformers/pull/6689?src=pr&el=footer). Last update [abc0202...54feec2](https://codecov.io/gh/huggingface/transformers/pull/6689?src=pr&el=lastupdated). Read the [comment docs](https://docs.codecov.io/docs/pull-request-comments).


Nice! I like it. Ok for me to do the same on the TF one :+1: