Raft log

Prepare for persistency. 
We need to persist:
1. new log entries
2. term change
3. vote change
4. configuration change (via persist commitIndex)
before send out any reply message after Node.Step. 

The workflow will be 
```go
n.Step(m)
wal.SaveEnts(n.UnstableEnts())
wal.SaveState(n.UnstableState())
peerHub.Send(n.Msgs())
```
@bmizerany @unihorn 

what do you consider unstable?