Integrate with riak_ensemble, enabling strong consistency

This pull-request integrates riak_kv with riak_ensemble, enabling
single key atomic operations. This feature is not yet exposed over
any normal client interface, but can be used via riak_ensemble_client.

NOTE: The current implementation is not safe during handoff/ownership
transition.
Make consistent ops safe during handoff/ownership transition
Update riak_client to support consistent operations
Update PB client to support consistent operations
Update HTTP client to support consistent operations
Update riak_kv_ensemble_backend

Add new sync_request/sync callbacks that currently do nothing.
Need to implement actual AAE-based syncing in a future commit.

Throttle the async update_members logic to allow only one async
update to be active at a time.
Fix riak_kv_ensembles bugs

Fix bug where riak_kv_ensemble tick was not rescheduled if the
ring had not changed since the last tick.

Add retry logic to attempt to recreate ensembles if the prior
attempt failed, ignoring if the ring has changed or not.
Merge branch 'jdb-strong-1.4.2' into jdb-strong-2.0-wip

Conflicts:
	rebar.config
	src/riak_client.erl
	src/riak_kv_pb_object.erl
	src/riak_kv_util.erl
	src/riak_kv_vnode.erl
Switch to using bucket type properties to denote consistent objs

Change riak_kv_util:consistent_object to use the bucket property
setting "consistent=true" to denote consistent objects, rather
than a magic bucket prefix.

Update riak_client to work properly as a remote client when using
this bucket properties approach.

Only start riak_kv_ensembles if the consensus subsystem is enabled.
Default to put_once (not overwrite) for consistent puts
Comment out stray debug statement
Remove unnecessary riak_core dependency
Merge pull request #710 from basho/jdb-strong-2.0