Moved endpoint into raft context, and changed all uses of server names to acquire them from the raft context.  This greatly streamlines the parameter lists in the functions supporting the core raft algorithm, at the cost of more, longer let expressions.
small cleanup
Type simplification
Reordered some parameters for consistency, and also added some additional consistency tests
Initial implementation of support for changing cluster membership
Okay, much better test to prove that we did indeed add a new participant to a cluster...theoretically, with safety.
Configuration changes are pre-committed, for safety
WIP members now tracked in RaftState, and method added to Log so that its possible to stop committing entries, in case its not yet possible to do so.  This is groundwork for correctly handling cluster membership changes,  as it should not be possible to commit a new config change if a joint config is still in effect.  Further, the rules of Raft require that it is not safe for a leader to commit any entries until at least 1 entry from the term has been appended to a majority of members.  These conditions are not yet checked.
Slightly better checks before committing at the leader: can't commit unless the safe term (e.g., the lowest appended term on a majority of members) is equal to the leader's term. That meets the criterion specified in the Raft algorithm: at least 1 entry from the leader's term must be on a majority of members before committing.
Don't change term before we test whether its higher than current term.
Small change, in preparation for refining how cluster membership changes occur.  Leader now fetches uncommitted entries in batches, with at most 1 configuration action which either appears at the beginning of the batch or not at all.
Small change to ensure that once a joint config is committed and a new config entry appended, the data for that new config entry are reset so that the config entry isn't repeated.
Building for multiple GHC versions on Travis

Now building for GHC 7.8 and 7.6
Removed use of "new participants," and changed to remembering an index to know when the current configuration has been committed.
Merge branch 'master' of github.com:hargettp/raft
Small refinement to configuration handling: only need to set index for a joint configuration.
Merge branch 'master' into monadic