Add balanced strategies for device_map in from_pretrained
# What does this PR do?

This PR brings to Transformers the functionality introduced in https://github.com/huggingface/accelerate/pull/534 .
Basically `device_map` can now take several options:
- `"sequential"` which corresponds to the current auto: fill each GPU sequentially (and if the user has lots of GPU spaces, some are not used at all)
- `"balanced"` which will split the model evenly across GPUs
- `"balanced_low_0"` which will split the model evenly across GPUs while leaving the most available memory on GPU 0, since that GPU might have more tensors on it when the outputs are used for some form of post-processing (generate and use_cache for instance)
- `"auto"` which now defaults to `"balanced"`.

When the user does not have enough GPU memory to accommodate the model, all the options are equivalent.
_The documentation is not available anymore as the PR was closed or merged._