accelerate mixed precision integrate
### What does this PR do?
1. Shift Trainer's mixed precision handling to accelerate. Having smaller PR for this instead of mixing this with DDP, FSDP and DeepSpeed changes.
2. Sharded DDP and Apex are cases not supported in Accelerate and because of this I'm unable to simplify further and delete chunks of code in Trainer.
3. No user-facing changes. User can now use `accelerate launch` for launching mixed precision training in Trainer. Example given below:
```
accelerate launch --mixed_precision="bf16" run_glue.py   --model_name_or_path bert-base-cased   --task_name $TASK_NAME   --do_train   --do_eval   --max_seq_length 128   --per_device_train_batch_size 32   --learning_rate 2e-5   --num_train_epochs 3   --output_dir ~/temp/$TASK_NAME/ --overwrite_output_dir
```

the previous usage via `python` or `torchrun` is same. 
```
python run_glue.py   --model_name_or_path bert-base-cased   --task_name $TASK_NAME   --do_train   --do_eval   --max_seq_length 128   --per_device_train_batch_size 32   --learning_rate 2e-5   --num_train_epochs 3   --output_dir ~/temp/$TASK_NAME/ --fp16 --overwrite_output_dir
```
_The documentation is not available anymore as the PR was closed or merged._