Add timing inside Trainer
# What does this PR do?

Add timing reports for training/evaluation and test inside the Trainer. Also, change the default repr of `TrainingArguments` to avoid printing the deprecated arguments.

There is a breaking change in this PR: the output of `Trainer.train` gains a new field `metrics`, so the length of the namedtuple changes. I don't think it's too bad since all scripts and examples I've seen never store the result of this `train` method. After discussion with @LysandreJik we proposed to merge this breaking change and revert it before the next release if users complain.
may I ask for one more bit, while you're at it - sorting the metrics before printing them out?

I added this already into the final json file writing, but it'd make it easier to read the info logs.

Now we have:

```
2020-12-18 11:51:55 | INFO | __main__ |   val_loss = 368.4116
2020-12-18 11:51:55 | INFO | __main__ |   val_bleu = 26.3465
2020-12-18 11:51:55 | INFO | __main__ |   val_gen_len = 31.2
2020-12-18 11:51:55 | INFO | __main__ |   val_runtime = 22.1214
2020-12-18 11:51:55 | INFO | __main__ |   val_samples_per_second = 9.041
2020-12-18 11:51:55 | INFO | __main__ |   epoch = 1.0
2020-12-18 11:51:55 | INFO | __main__ |   val_n_objs = 200
```

as compared to sorted:
```
2020-12-18 11:51:55 | INFO | __main__ |   epoch = 1.0
2020-12-18 11:51:55 | INFO | __main__ |   val_bleu = 26.3465
2020-12-18 11:51:55 | INFO | __main__ |   val_gen_len = 31.2
2020-12-18 11:51:55 | INFO | __main__ |   val_loss = 368.4116
2020-12-18 11:51:55 | INFO | __main__ |   val_n_objs = 200
2020-12-18 11:51:55 | INFO | __main__ |   val_runtime = 22.1214
2020-12-18 11:51:55 | INFO | __main__ |   val_samples_per_second = 9.041
```

or I could make a PR later if it's too unrelated... I probably should do that and not waste your time.

Thanks.