save_checkpoint behavior was ill-defined when later checkpoint already exist
Fix:
- Add overwrite option to save_checkpoint (defaults to False)
- Raise an error when overriding a checkpoint accidentally
- Raise an error when storing a checkpoint that has a smaller step than the latest.