use heartbeat to flush the new command in do() function and keep the response result in the log entry
add timer.fire function, which can fire at the timer channel
election new leader and rejoin works
fix snapshot
when the leader fails in during the collecting response phase, let it step down
change the do struct and add commit center
fix issues, further cleaning is needed
add comments and gofmt
Merge branch 'master' of https://github.com/xiangli-cmu/go-raft into xiangli-master

Conflicts:
	server.go
Add debug mode.
Add some padding to the entry's commit channel.
Convert LogEntry.result to interface type.
Clear reference to LogEntry.result after return.
Fix TestLogEntryUnmarshal.
Fix TestLogExistingLog.
Clean up Peer.flush().
Log clean up.
Remove s.Peers().
Add s.Peers() and peer cloning.
Remove unnecessary server locks.