raft: add tests based on section 5.2 in raft paper

#1408 
a better way to do this kind of tests maybe just:
```go
TestFollowerElectConflict(t *testing.T) {testElectConflict(stateFollower)}
TestFollowerElectConflict(t *testing.T) {testElectConflict(stateCandidate)}
testElectConfilct(t *testing.T, state StateType) {
...
}
```
i really want to get rid of the unnecessary deep for loop.