Rebased push of riak_kv#807 (put_merge refactor + EQC)

Refactor the common put_merge code into riak_object.
Create a EQC statem test for riak_object:merge, reconcile, syntactic_merge that uses Ricardo Goncalves's DVVSet code as a model (https://github.com/ricardobcl/Dotted-Version-Vectors)

This is a rebased push of riak_kv#807. (cc @metadave)