Completely different API! Commit() is required.

Previously, calling Close on a file would do sync-close-rename.
Now, to save file, users should explicitly call Commit. Without
calling committing, Close will close and delete temporary file
without modifying the original one.