Fix multiple deletions of the same files in save_pretrained
# What does this PR do?

Checkpoint sharding introduced a bug in `save_pretrained` for distributed setups, where the function is called on every process (TPU training for instance, or the scripts with Accelerate (see [this issue](https://github.com/huggingface/accelerate/issues/325)).
This changes the logic to only remove files when:
- they are different from existing ones (which should handle almost all cases since we can expect the save in a folder with existing weights to use the same model)
- we are on process 0.

Except `save_pretrained` does not know if we hare on process zero or not, so I use `save_config` to detect that. It looks like that argument was not aptly named and should be `is_main_process` instead. I can go ahead and deprecate/rename in this PR if you agree.
_The documentation is not available anymore as the PR was closed or merged._