Add breadth-first AAE exchange

This commit ports the breath-first exchange algorithm from the synctree code in riak_ensemble to the hashtree code here in riak_core. This level-by-level exchange is necessary to support streaming and/or pipelined AAE exchange -- an approach that underpins the new AAE-based fullsync replication protocol in Riak Enterprise.

Sibling pull-requests: basho/riak_kv#1023, basho/riak_repl#616
BK is the key in the orddict, so I think it will be keyed as Bucket. Here's an example of orddict_delta showing how the key is separate from the ```'$none'``` so you can see BK will not be set to it.

```
(riak@127.0.0.1)87> riak_ensemble_util:orddict_delta(orddict:from_list([{a,1},{b,2},{c,3}]),orddict:from_list([{b,2},{c,5},{d,4}])).
[{a,{1,'$none'}},{c,{3,5}},{d,{'$none',4}}]
```