refactor(server.go) refactor candidate loop
tests(server_test.go) add test for processVoteResponse
Merge pull request #179 from xiangli-cmu/refactor_candidate_loop

refactor(server.go) refactor candidate loop
refactor(server.go) change setCurrentTerm to updateCurrentTerm
process functions should always compare the term
simplify the logic of updateCurrentTerm
remove uncessary setState
refactor(server.go) change server.stopped a chan of chan
It is a clean way to sync between a function call and a goroutine.
Merge pull request #183 from xiangli-cmu/remove_else

refactor(server.go) change server.stopped a chan of chan
remove(travis) do not need this file anymore
Added Weed File System using go-raft
Merge pull request #185 from xiangli-cmu/remove_travis

remove(travis) do not need this file anymore
introduce _assert
Merge pull request #181 from xiangli-cmu/refactor_set_currentTerm

refactor(server.go) change setCurrentTerm to updateCurrentTerm
refactor(server) rename currentSnapshot->pendingSnapshot, lastSnapshot->snapshot for clearity
Merge pull request #189 from xiangli-cmu/snapshot_rename

refactor(server) rename
Change LogEntry.Decode() to use io.ReadFull().

Per Ayende Rahien, a log entry can be partially read which could cause corruption or data loss. This changes the read to ensure that the expected number of bytes are read.
Merge pull request #192 from benbjohnson/read-full

Change LogEntry.Decode() to use io.ReadFull()