NewFileJournal(path string) (Journal, error): given a path, returns a Journal based on the file at that path. If no file exists, one is created. If a file does exist, the Journal is built from the entires already in that file.
Size() int: returns the numer of entries currently in the journal
Empty(): empties the journal by truncating the underlying file and resetting the in memory linked list
Append(e Entry) error: adds an entry to the journal by writing it to the underlying file and adding it to the in memory linked list.
NewIterator() *EntryIterator: returns an iterator over the in memory linked list of entries
.protofile here may be useful in figuring out what the Two Phase Commit API looks like.