initial version w/ size limit
Merge remote-tracking branch 'origin/jd-cuttlefish' into feature/pevm-metadata-cache
make cache disablable
Stop sibling explosion

Add an event `dot` to metadata on PUT, use this to drop
siblings that are dominated by a put.
Remove test for removed code
Re-instate the removal of dominated and duplicate objects

Fix ec_eqc to use the DVV logic and expect fewer siblings
Re-add test (since I re-added the thing it tests)
Add tests for mixed dotted an undotted merge

Data written before dots must merge safely with dotted data
a value with no dot os always kept.
Add "killswitch" for DVV

Harden code a little
Add `dvv` option to cuttlefish

If `dvv` is `off` then use the legacy merge function which does
not use `dots`
WIP on remove | add fix
WIP add `remove_all` to split_ops, add test for non-empty ctx
Fix split eqc to set field element removes
WIP eqc for crdt update
Use per-vnode locks to guard concurrent folds on the same partition.
Merge CRDTs inside riak_object merge

Why? Well it means no CRDT siblings on disk. Previously CRDTs
were merged only when a CRDT Operation was performed from the CRDT
API endpoints. This means read repair, AAE, and repl, could all cause
siblings on disk.

With the addition of DVV style causality, we need to make a choice
about CRDTs. We don't have DVVSets and the anonymous list. So CRDTs
either have to merge Dots into a mini-version-vector, or not have dots.

If CRDTs don't have dots, so their values always survive a merge,
then they are subject to repl induced sibling-explosion (possibly)

Merging in riak_object:merge solves that issue.
As an added benefit it also means that Yokozuna indexing of CRDTs
will just work.

I'd really appreciate a performance comparision between this and
the plain DVV branch, and the pre-DVV stuff for 2.0.
Remove incomplete EQC test for now
Merge pull request #758 from basho/bug/rdb/sibling-explosion-crdt

Merge CRDTs inside riak_object merge
- add overload for vnode_status commands
- add handling for overload messages
Remove old dedupe logic as it is no longer needed

The new merge function by CMeik actually removes the need for
object deduplication (it deduplicates contents).

Well spotted Vagabond!