Remove ExecutorService in lead.
Change quorumSet by passing messages.
Add atomic set/get configuration from file.
Merge pull request #95 from EasonLiao/quorumSet_clone

Change quorumSet by passing messages.
Single server can join itself.
New follower joins in in failure free case.
Now can boot from just log directory.
Remove Request class, refactor MessageTuple out of Participant class.
Merge pull request #99 from EasonLiao/reconfig

Follower joins old configuration in failure free case.
Select the leader with right configuration after recovery.
Add four more join test cases.
Merge pull request #101 from EasonLiao/reconfig

Select the leader with right configuration after recovery.
Clean up cluster change callback.
Merge pull request #102 from EasonLiao/master

clean up cluster state change callbacks