Make checkpointing more robust
Make checkpointing more robust

- Create .world file atomically (by renaming .world.partial).
- Don't crash if writing fails.
- Attempt to unlink .partial file so failed writes/moves don't leave
cruft lying around.
- Log confirmation of successful checkpoint, or short error message on
failure.

Fixes #114

google/CodeCity,google/CodeCity,NeilFraser/CodeCity,NeilFraser/CodeCity,NeilFraser/CodeCity,NeilFraser/CodeCity,google/CodeCity,google/CodeCity