Make tests passed
Use 0 to denote initial log entry index instead of nil
Follow the protocol more strictly
First round of refactoring, make concept of role explicitly
Add udp  erver