[Deepspeed] Assert on mismatches between ds and hf args
This is another iteration to make things less prone to errors when dealing with the complex space of partially overlapping DS and HF Trainer configs.

- validate params and assert on mismatch - revamps how the config massage is done
- add a test
- add docs
- this new code uncovered a config mismatch in the deepspeed tests thanks to the new validation, so fixed that too.

As example on a really bad mismatch (as in the new test), the user gets an assert with:
```
Please correct the following DeepSpeed config values that mismatch TrainingArguments values:
- ds train_micro_batch_size_per_gpu=4 vs hf per_device_train_batch_size=2
- ds gradient_accumulation_steps=4 vs hf gradient_accumulation_steps=2
- ds train_batch_size=1000 vs hf train_batch_size (calculated)=4
- ds gradient_clipping=1.1 vs hf max_grad_norm=1.0
- ds optimizer.params.betas=[0.8, 0.89] vs hf adam_beta1+adam_beta2=[0.9, 0.99]
- ds fp16.enabled=False vs hf fp16+fp16_backend(amp)=True
The easiest method is to set these DeepSpeed config values to 'auto'.
```

Fixes: https://github.com/microsoft/DeepSpeed/issues/1107

@sgugger 
@stas00 - this looks great.  Thanks for the added bonus of showing the conflicting names, values, and sources!<|||||>I'm glad to hear you found it useful, @rfernand2. 

This is all new and experimental so if you find other suggestions for improvements please don't hesitate to file an issue. Thank you!