Use SC bucket types and buckets to know ensembles

If we use a default bucket property with a different n_val from the
strongly consistent bucket type, ensembles for that bucket type will
never be created. The problem seems to stem from the fact that
riak_kv_ensembles:required_ensembles/1 checks all current bucket n_vals
for ensembles to create, but doesn't check bucket types that don't yet
have buckets created. Since all buckets are created on demand with a
put, and it's not possible to put if the ensemble doesn't exist, the
buckets and ensembles never get created.

To fix this we now iterate through all bucket types and collect all
n_vals from them, as well as the n_vals from the existing buckets in
order to figure out the set of all n_vals required to create ensembles.

Fixes #1007
Remove ring id optimization in riak_kv_ensembles

Since the ring does not change when bucket types are activated we remove
the check for a changing ring id that was supposed to prevent
unnecessary work. Leaving the optimization in would require changing
riak_core to trigger on cluster metadata changes in addition to ring
changes. This change thus prevents us from having to change riak_core
at the expense of some extra work to check if the ensembles have changed
when they probably haven't.
Merge pull request #1008 from basho/bugfix/ensemble-creation-on-bucket-type-activate

Use SC bucket types and buckets to know ensembles

Reviewed-by: jtuple

Backport merge of 3489f5b403ca3644c1f0af0a42509b7d673f5f13
Set bitcask dep pointer to 1.7 branch from tag
Update to use new breadth-first AAE exchange

This commit updates riak_kv to work with the new breath-first AAE
exchange added to riak_core. This new level-by-level exchange is
necessary in order to support the new pipelined AAE-based fullsync
replication protocol in Riak Enterprise.
Merge pull request #1026 from basho/feature/aae-exchange-bfs-2.0

Update to use new breadth-first AAE exchange

Reviewed-by: jonmeredith
Merge pull request #1027 from basho/rdb/bug/vnodeid-resuse

Attempt to make vnodeids on the same node unique

Reviewed-by: andrewjstone
Consuming the vnode_status output in stats was brittle

Fix to expect a list of more than one element
Add uneeded comment to kick the build bot
Merge pull request #1035 from basho/bug/rdb/vnode-status

Consuming the vnode_status output in stats was brittle

Reviewed-by: russelldb
WIP move vnode persistent state into new module/process
WIP kv679 fixes. Adds a per vnode monotonic counter

use the counter to create a per epoch key when local not found.
WIP: don't allow the counter to get above 32bit int size

When it hits that limit create a new vnodeid.
WIP fix xref errors
WIP fix dialyzer
WIP really fix dialyzer
WIP only increment vnode counter on new per key epoch

Start a new epoch if the local object has a lower epoch for the
vnode id than the incoming object (no epoch is lower, no epich is zero)
WIP fix new dialyzer errors

Bad match for re-refactord put_merge return.
Correct return type for highest_actor
WIP update the vnode status command as per fix on 2.0 branch