Make get_put_monitor_eqc pass during `make test`

Calling code:purge/1 and code:delete/1 were needed to make the test
pass. They effectively skirt using a sidejob worker to update folsom
stats, and do it directly instead. Since riak_kv is not running casts to
update folsom were being dropped on the floor that were needed by the
test. This only occurred in `make test` and not when running
get_put_monitor_eqc standalone because riak_kv was started and shutdown
before this test ran during `make test`.

Additionally, I added timeouts for the polling in case of a regression,
made the precondition more specific and ran this test in a slave node.
While these changes aren't strictly necessary they provide for cleaner
code and a better example for future tests.

I also removed some dead code.
use setup instead of node fixture for get_put_monitor_eqc
Allow utf-8 bucket types
Drop io:setopts in favor of the same change to nodetool
Error messages from `check_permission` can be utf-8, so use `unicode` module instead of `list_to_binary`.
Implement ping behavior in riak_kv_ensemble_backend
Update to work with latest riak_ensemble API
Add support API to riak_kv_ensembles
be explicit about output encoding of characters_to_binary
bucket_type_create/1: handle missing json and use default props
Merge pull request #867 from basho/bugfix/get_put_monitor_eqc

Make get_put_monitor_eqc pass during `make test`
Implement AAE-based ensemble syncing

This commit updates riak_kv to work with the new ensemble syncing
behavior added to riak_ensemble. The purpose of peer syncing is to
detect and repair corrupted/missing ensemble backend data.

For riak_kv_ensemble_backend, syncing is implemented using AAE.
Anytime a vnode is restarted it is considered untrusted until the
vnode performs AAE exchange with a majority of sibling vnodes.

To support AAE syncing, riak_kv_vnode was extended with a new
ensemble_repair command and the riak_kv_exchange_fsm was extended to
use this command to repair consistent keys. This change is needed
because consistent data does not yet support read repair. Likewise,
even when consistent data supports read repair, it will only do so
when a given ensemble is stable. However, syncing is required to
operate even when an ensemble is not stable (eg. peers may be required
to sync before they can proceed to elect a leader).
Bound testing time for riak_object_dvv_statem

On my box, this test was timing before it reached the required 1k tests.
This change uses testing_time instead of a fixed number of iterations.
On my box, I find that I still get close to 1k iteratons in.
Merge pull request #898 from basho/bugfix/dvv-set-eqc-timeout

Bound testing time for riak_object_dvv_statem
Merge pull request #874 from basho/jrd-security-unicode

Fix list_to_binary invocations on permissions errors
Address spurious dialyzer warning

Slightly rewrite riak_kv_vnode:handle_command({ensemble_repair, ...) to
address a minor "value produced/but unmatched" warning from dialyzer.
Merge pull request #887 from basho/jdb-ensemble-overhaul
Remove intermittently failing keys fsm test

The keys_fsm_eqc has been intermittently failing for some time. The test
seems to only fail while run under the entire suite. This, along with
discussion in #649 and basho/riak_test#372, it has been determined to
remove this test and write a proper integration test in riak_test.
basho/riak_test#372 will track the progress of this riak_test.

Fixes #899
Merge pull request #896 from basho/jdb-ensemble-sync
Merge pull request #868 from basho/jrd-bucket-type-unicode

a couple bucket type console command improvements