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 will soon underpin the new
AAE-based fullsync replication protocol in Riak.
Merge pull request #629 from basho/feature/aae-exchange-bfs-2.0


Reviewed-by: jonmeredith