Cluster Metadata: The Basics

This commit implements the basic moving parts for riak_core's new k/v
store for cluster-wide information. Cluster Metadata is meant to
replace current uses for metadata stored in `riak_core_ring`.

The interface for interacting with the store is defined in
`riak_core_metadata`. Data is read and written locally and is fully
replicated to all nodes eventually. Data is stored on disk using dets
and is managed by `riak_core_metadata_manager` (the ground work has
also been laid to keep a copy of data in-memory w/ ets for use on
reads). Data is addressed by a given prefix (a two-tuple of any erlang
terms) and a key. Each stored prefix/key has an associated logical
clock (a dvvset -- more below). The representation of the object and
its clock are abstracted via `riak_core_metadata_object`.
`riak_core_broadcast` implements a new broadcast/gossip protocol for
disseminating updates to other nodes. The module is implemented to be
a general broadcast protocol that could be used by other
subsystems. `riak_core_broadcast_handler` is a new behaviour that
defines the API a module must implement to use
`riak_core_broadcast`. `riak_core_metadata_manager` implements this
behaviour. `riak_core_broadcast` is based off the plumtree protocol
(http://www.gsd.inesc-id.pt/~jleitao/pdf/srds07-leitao.pdf) with some
modifications to make it more partition tolerant and fit with
riak_core's membership model. The implementation uses the sender-based
tree approach mentioned but not analyzed in the paper. The current
implementation does not fully guaruntee at-least once delivery (it
will be fully implemented in a future commit).

`riak_core_broadcast` and `riak_core_metadata_manager` run per node
and are started after the ring manager.

This commit introduces dvvset.erl from
https://github.com/ricardobcl/riak_core/blob/dvvset/src/dvvset.erl. This
may not be the actual version of Dynamic Version Vectors
used. `riak_core_metadata_object` is meant to abstract the object
representation and logical clock so a switch to a new implementation
of dvvset or one just using vector clocks can be made easily.