interface modification

For a consistent store clusters, the store has the same horizon MUST have the same content. Thus, write/delete/compact should increase the horizon. 

raft will ask for a snapshot if the raft wal log is compacted. 
raft needs to attach the raft index to the raft.Snapshot proto before writing the snapshot. Also it is etcdserver's responsibility to map from horizon to raft index.

So we should return an io.reader instead writing to io.writer. also we need to return the horizon of the snapshot.