feat(server.go) introduce server.Init()

This commit enable dividing raft server starting process to two phase. So application can do extra work based on the last status of the raft server before actually start 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.