Fix race condition in Candidate election

electionTimer must be set before anything that could call transition
MajorityCollector should handle case of empty list of Futures

We now check if we are complete immediately if we have no futures.

This happens when we set up a single node cluster.
Merge pull request #38 from justinsb/fix_race_condition

Fix race condition in Candidate election
Merge pull request #39 from justinsb/single_node_cluster

MajorityCollector should handle case of empty list of Futures
Add an actual start state and load the log in that state instead of the RaftService
Allow builder to specify state machine executor
Allow commit to return a result from the state machine
Extract out timer logic to a DeadlineTimer
Fix compile errors related to commit returning Object instead of boolean
removed snapshotting to reset for real implementation
Update README.md
make CandidateTest pass again
make unit tests pass again
Merge pull request #45 from foldlabs/test_pass

Test pass again #43
remove gradle related build artifacts
Merge pull request #47 from foldlabs/remove_gradle

remove gradle related build artifacts
Create a maven profile for travis, that excludes jacoco
Remove sunjdk6 from travis.yml; it is no longer available on travis
Just package, don't try to deploy on travis
Merge pull request #49 from justinsb/fix_travis

Fix the travis build: exclude jacoco, sunjdk6; don't deploy