Refactored out readRootsScan() function.
go fmt.
FlushRevert() API, allowing revert or undo of the last Flush().

Allows the application to revert the last persistence operation,
a.k.a. Flush().  The FlushRevert() operation is destructive, scanning
backwards in the file to find the file "tail" roots record that was
written by the previous Flush() call and truncating the file to that
point.

Invoking FlushRevert() enough times should result in an empty Store.

As part of this change, the file interface also must support a
Truncate() method.