feat(server.go) introduce server.Init()
This commit enable dividing raft server starting process to two phases. So application can do extra work based on the status of the raft server before starting it. To implement this, we add a initialization phase, in which raft server reads in the log entires from data-dir and commits to the last recorded index.