Seq2SeqTrainer
This PR adds `Seq2SeqTrainer` to use `Trainer` for summarization, translation and other seq2seq tasks.

`Seq2SeqTrainer` includes:
- label smoothing loss
- sortish sampler
- predict from generate to allow calculating generative metrics

`finetune_trainer.py` includes:
- `Seq2SeqDataCollator` to correctly prepare `labels` and `decoder_input_ids`
- `Seq2SeqTrainingArguments` for extra training arguments.
- encoder and embedding freezing.
- `compute_metrics_fn` for translation(BLEU) and summarization (ROUGE)
- evaluation

Most of the data and model arguments are kept identical to `finetune.py` file 

Seq2Seq4Eva!🔥
Command for running `finetune_trainer.py`

```bash
python finetune_trainer.py \
  --model_name_or_path sshleifer/bart-tiny-random \
  --data_dir xsum \
  --output_dir test \
  --overwrite_output_dir \
  --n_train 8 \
  --n_val 8 \
  --max_source_length 512 \
  --max_target_length 56 \
  --val_max_target_length 56 \
  --do_train \
  --do_eval \
  --num_train_epochs 2 \
  --per_device_train_batch_size 4 \
  --per_device_eval_batch_size 4 \
  --evaluate_during_training \
  --predict_from_generate \
  --logging_steps 2 \
  --save_steps 2 \
  --eval_steps 2 \
  --sortish_sampler \
```<|||||>Note: Eventually we need to refactor seq2seq/README.md to accommodate this<|||||>This looks great. Very excited to try this out with the `EncoderDecoder` model.<|||||>LGTM pending resolution of padding mystery.<|||||>Great work @patil-suraj !