Fix test startup and ets backend badmatch

 * A bunch of apps need to be started for lager to work. Use the new
   application:ensure_all_started/1 call to have rafter start it's
   dependencies automatically.

 * While fixing dialyzer warnings I introduced a regression in
   rafter_backend_ets. This commit fixes that.
added voting structure and state types and records
rafter_config.erl: updated specs and inserted to_list in appropriate places
rafter_config.erl: new quorum function
rafter_consensus_fsm.erl: updated specs and added to_list
rafter_voting.erl: initial commit
call quorum_min with struct rather than list of peers
generalised quorum_min
has_quorum instead of no_quorum
quorum: operate on dict instead of list
no need to convert to list for rafter_voting:quorum
quorum_min: process indices in correct order
include "yes" vote if local server is part the consensus group
better handling of "Me" in rafter_config:quorum
true instead of yes
use filtermap in has_quorum
small fixes
separate out vstruct_p

Conflicts:
	voting.hrl
voting.erl: init_vstate, take 1
no need for "| null"