Add General Exchanges to riak_core_broadcast

to ensure at-once delivery riak_core_broadcast must periodically
trigger full exchanges between two nodes. Since riak_core_broadcast is
meant to be general and can be used by multiple sub-systems
simultaneously, the definition of "exchange" is losesly
defined. Broadcast, now, simply takes a list of modules that will
broadcast messages (this list is not, yet?, checked on broadcast) and
periodically asks them to exchange with a peer.  An exchange may
involve database shipping or exchanges and repair using hashtrees --
as is done for riak_core_metadata_manager in this commit.