Modify device_map behavior when loading a model using from_pretrained
# What does this PR do?

Change how `device_map` works in the `from_pretrained` function when we load the model: 
- Training setup: we don't need to pass the `device_map` anymore ('cpu' by default or torch.cuda.local_device() for 4/8 bit model) or we can set `device_map` to the device we want our whole model to be placed on('cpu', 'cuda:0', 0, `torch.device('cpu')`...). 
- Inference setup: pass custom device_map or device_map in `["auto", "balanced", "balanced_low_0", "sequential"]`

Fixes [1412](https://github.com/huggingface/accelerate/issues/1412)

## Who can review?

@sgugger @younesbelkada 

_The documentation is not available anymore as the PR was closed or merged._