[trainer] self.model_wrapped + _model_unwrap
This PR adds:

* [x] adds `self.model_wrapped` - to have access to the outmost module regardless of how many times it was wrapped (e.g. under DeepSpeed there is a double wrapping ` DDP(Deepspeed(Transformers Model))`)
* [x]  makes sure that `self.model` is always set to the normal model
* [x] fixes a bug where under `model_parallel` `self.model` was not set (twice)!
* [x] simplifies the `model_init` checking logic 
* [x] replaces `_actual_model` which couldn't handle multiple wrapping levels with `_model_unwrap` which can and integrate it

Please ignore the small mentions of DeepSpeed, this PR is split of from https://github.com/huggingface/transformers/pull/9211 to get all the non-DeepSpeed related changes into a separate review to make things a bit easier on the reviewers as it was suggested by @sgugger. This PR was made by copying from the other PR and manually removing all the added deepspeed code. 

If possible, let's get it in asap so that I could rebase and we could move on with the DeepSpeed PR. Thank you very much!

@sgugger 
This should be good now, @sgugger - thanks a lot for all the suggestions!<|||||>@LysandreJik GitHub Reviewers is down, so tagging you instead.