Adding support for a state snapshot mechanism

Adding a mechanism by which Serf can push enough state to disk that can be used to gracefully recover. The on-disk state represents the latest lamport clock values for members and user events, as well as the addresses of known alive nodes. These can be used on restart to avoid event replay, prevent very old clocks, and to automatically re-join a cluster on failure. This is eventually for #84 and #71.