set NettyTransportTest.testSend timeout to 10 seconds.
Merge pull request #160 from m1ch1/master

set NettyTransportTest.testSend timeout to 10 seconds.
netty transport test: adjust timeout for some tests.
Merge pull request #162 from m1ch1/master

netty transport test: adjust timeout for some tests.
netty transport: set quiet period to zero.

Disable grace peiod in EventLoopGroup.shutdownGracefully() so that boss
group and worker group get shut down immediately.
Merge pull request #166 from m1ch1/master

netty transport: set quiet period to zero.
Add retry logic for joining.

The joiner might started before the cluster gets started. The joiner will try to
re-join the cluster if it can't connect to the cluster.
Merge pull request #163 from EasonLiao/join_retry

retry join if it fails
Some refactoring to support different elections.

Includes:
1. Move the logic of transport from ParticipantState to MainThread.
2. Define election message.
3. Change the interface of Election.
4. Make Election method configurable.
5. Pass election object to Leader/Follower so they can reply its leader vote.
Workaround on NettyTransport for tie breaking.

Does random wait if the handshakeFailure is caused by tie breaking.
Add FastLeaderElection.
Fix the bug of communicating the sync timeout value.
Merge pull request #161 from EasonLiao/netty

Enqueue a message to shutdown NettyTransport and increase timeout for Ne...
Merge pull request #168 from EasonLiao/fix_sync_timeout

Fix the bug of communicating the sync timeout value.
Fix the warning in test.
Merge pull request #167 from EasonLiao/fix_warning

fix the warning in SyncProposalProcessorTest.java
Add tests for FastLeaderElection.
Fix findbug warnings.
Merge pull request #169 from EasonLiao/fix_findbugs

Fix findbug warnings.
Merge pull request #150 from EasonLiao/fast_election

implement a leader election algorithm that finds the best history in a quorum