Add basic stats for strongly consistent operations

Consistent gets/puts now correctly increment vnode_gets/vnode_puts the
same as normal gets/puts. Prior to this commit, gets incremented the
relevant stat but puts did not.

Consistent operations now maintain per-operation stats that are similar to
the node/FSM stats for normal gets/puts. This includes operation counts,
latency percentiles, and object size percentiles.
Add stat recreation code
Add riak_kv_ensemble_backend:handle_down/4

Have the backend monitor the vnode and vnode proxy. The peer will
receive 'DOWN' messages and call riak_kv_ensemble_backend:handle_down/4
as a result.

Part of a fix for basho/riak_kv#985
Fix MOD_MAP when datatype update request includes return_body=true
Merge pull request #987 from basho/bugfix/sdc/dtupdate-mod-map

Fix MOD_MAP when datatype update request includes return_body=true

Reviewed-by: russelldb
Fix AAE on/off detection

riak_kv/anti_entropy takes a value of the form {on|off, Opts}, not on
off.
Correct discrepancy between do_get_term and case clause in do_delete

This was causing node shutdown when running the Java client
integration tests. On a small scale, this would be fine (one vnode
crashing would start back up), but in massive-delete scenarios entire
clusters could go down. We should heed the TODO message in do_get_term
and handle this holistically, but for now this should prevent the
vnode from crashing.
Merge pull request #993 from basho/bugfix/fix-ensembles-aae-detection

Fix AAE on/off detection

Reviewed-by: coderoshi
Merge pull request #992 from basho/bugfix/sdc/notfound-badspec

Correct discrepancy between do_get_term and case clause in do_delete

Reviewed-by: reiddraper
Merge pull request #990 from basho/bugfix/monitor-vnode-proxy

Add riak_kv_ensemble_backend:handle_down/4

Reviewed-by: lordnull
SC ensemble peers should wait for riak_kv service
add riak_kv_vnode:handle_overload_info/2
fix line #s for riak_kv_vnode in dialyzer.ignore-warnings
Merge pull request #994 from basho/bugfix/handle-sc-vnode-overload

add riak_kv_vnode:handle_overload_info/2

Reviewed-by: kellymclaughlin
Merge pull request #989 from basho/feature/dont-start-peer-until-backend-ready

SC ensemble peers should wait for riak_kv service

Reviewed-by: lordnull
Merge branch 'develop' into feature/consistent-stats
Make ensemble trust/paranoia configurable

This commit makes K/V ensemble trust user configurable, allowing for
two settings: low and medium.

The 'low' setting assumes that vnodes are durable -- that once data
has been committed to a vnode, that data will never be silently
lost. In this mode, K/V ensembles are not required to perform an AAE
exchange before being trusted. This mode is similar to how most
consistent databases operate, and is suitable when users trust that
their disks will not lose data undetected. Using a filesystem design
to detect bit rot (such as ZFS) on a redundant RAID configuration is
essential when using 'low' paranoia.

The 'medium' setting assumes that vnodes are not durable, and that
they may silently lose data without detection. This mode requires all
K/V peers that restart/crash to first perform an AAE exchange with a
majority of other peers before being trusted. Since this exchange must
occur with a majority of peers (not counting the untrusted peer), this
mode requires more than a usual quorum majority to guarantee
availability.

The 'medium' mode assumes that the AAE trees on remote peers are not
corrupted such that they are missing the exact same keys which the
corrupted node is missing from its K/V data. This should be true in
practice, since AAE trees are rebuilt from scratch once a week across
the entire cluster.

Note: the paranoia setting is designed to deal with undetected data
loss -- an issue that many systems have no protection against. Normal
data corruption that results in a detected CRC error can be handled
without AAE and works in either paranoia mode.
Add cuttlefish strong_consistency.paranoia
Add schema test for strong_consistency.paranoia
Merge pull request #981 from basho/feature/consistent-stats

Add basic stats for strongly consistent operations

Reviewed-by: engelsanchez