This commit add suports for persistent logs.

It also contains a more complete API and better statem tests.

fix up the log test a bit

start of persistent log work

Create a file format and create functions for serializing log entries,
along with some tests.

WIP - add log scanning

WIP - convert entry binary to #rafter_entry on scan

WIP

WIP - A bunch of code for reading and writing log entries

WIP - change log to use a separate metadata file

WIP

WIP - it compiles and operates fine. log does not save.

functioning persistent log

Refactor and Cleanup

* Remove log functions that had a hardcoded peer name (?MODULE)
* Pass peer name into log functions and generate log process name in log
module.
* Allow passing of options so we can set the logdir and statemachine

[bugfix] - handle commits on restart

change truncation behavior for followers

[bugfix] - ensure metadata is saved/retrieved

Metadata was not being saved with the proper term. This fixes that and
also moves the #meta{} record into rafter.hrl

remove old debug var

fix eqc config test

Use new api for rafter:start_node/2 and remove logs after each test.

remove log tests

working system eqc test

all tests passing cleanly
add committed_entry_exists_in_log invariant
Merge pull request #7 from andrewjstone/feature/persistent-log

This commit add suports for persistent logs.