refactor(server.go) make async really async.
refactor(peer.go) use async send if possible
refactor(server.go) do not construct the string if not necessary
fix(server.go/peer.go) server.stop should stop heartbeat before close the log
chrod more clear debug info for committing
refactor make deny vote more clear
Fix spelling errors in comments and strings.
Merge pull request #147 from jbcrail/spelling-fixes

Fix spelling errors in comments and strings.
merge with master
refactor(server.go) try non-blocking send first
refactor(peer.go) clean up debugging info
Merge pull request #136 from goraft/refactor

Refactor
test(server_test.go) Fix a deadlock.
We stop all the servers before finishing the MultiNode test. The mock transporter directly calls to the function of the target server. If the target is stopped, the transporter will just hang there waiting for a reply. So the sender server will also hang for a reply. We add a timeout for the reply to solve this problem.
Fix spelling mistake in snapshot.go comment
Merge pull request #149 from xiangli-cmu/spelling_fix

Fix spelling mistake in snapshot.go comment
Merge branch 'master' of https://github.com/goraft/raft
Correct replacing of log file

Do not leak resources in case of errors and ensure data is synced to
disk before replacing files.
fix(sync) leader should do a sync before committing log entires
As we do not fsync every time log writes to file when the state is leader, we need to do fsync before actually committing the log entries to ensure safety.
Save config file atomically
Merge pull request #148 from xiangli-cmu/fix_test

test(server_test.go) Fix a deadlock.