Work in progress
Remove unnecessary writes to disk
Fix peer/supervisor shutdown bug, quorum_timeout bug
Numerous changes/fixes

Fix bug in riak_ensemble_peer where quorum_timeout messages were
being ignored, rather than being passed on to riak_ensemble_msg
for translation into {timeout, Replies} messages that the peer
was expecting.

Add sync_request/sync behavior to ensemble backends and implement
for riak_ensemble_basic_backend. Adding syncing has been a long
standing feature addition, but turns out is necessary for the
root ensemble case in order to guarantee empty root peers learn
root state before potentially taking over. Newly started peers
are untrusted, and only become trusted after syncing with a majority
of peers across all current views.

Change how riak_ensemble_peer to delay transitioning views until
after the larger joint membership is following the leader, this
ensures that at least a majority of newly added peers became trusted
before the transition.

Fix bug related to handling view_seq for check_ensemble. The view_seq
is now set to the fact epoch/seq at which the new view was created,
as well as incremented when a new epoch is established. This ties
view consistency to fact consistency.

Add delay between a probe timeout and retrying to probe.
Remove hardcoded old_hash define
Minor clean-up
Remove debug messages before tech preview
Timeout requests quickly when target node offline
Update sc.erl test for bucket types
Address code review comments/concerns

Update Makefile to check for rebar, as well as use less strict dialyzer
parameters by default.

Make test/sc.erl compile clean without warnings so that 'make test' works.

Fix an 'ummatched return' dialyzer complaint.

Add warning for corrupted riak_ensemble_basic_backend state.

Remove catch-all case for riak_ensemble_router:fail_cast.
Merge branch 'jdb-wip-2.0' into develop

Conflicts:
	src/riak_ensemble.app.src