Libify CRDT datatypes for re-use in riak / elsewhere
Update README.md, more to come
Since it's just a lib, there's no application behaviour.
Add a version vector based OR-Set

Copied vclock from riak_core rather than depend on riak_core
Merge branch 'crdt_lib' of github.com:basho/riak_dt into crdt_lib
Optimise the vclock base OR-Set to use a flag

Rather than copy the whole clock into a remove set, use a boolean
flag to indicate add/remove status of entry.
Add a document style holder for multiple CRDTS that is a CRDT
Add some expositional comments
Equals is wrong
Drop timestamp from vclock, don't need it
Fix equals to be pairwise on the whole value list
WIP optimize vvorset for repeitive actors
Attempt to optimise vvorset for space a little

With a vclock per entry, assuming a reasonably static set of actors
and the same actors adding each entry, there is a lot of repeated
actor ids in the datastructure. Riak_Kv uses 8byte actor IDs.

Tests showed that for 100 entries, each with a number of actors
(concurrent adds) the size of the vvorset was not inconsequential.

Added an actor list, which is used to replace each 8byte actor ID
with a single int. These are encoded by erlang to 3 bytes.

Tests show a saving of 9Kb on an 100 entry set with high concurrency
for adds.
Docs, specs, to and from binary funs

Merge back the counters that made there way to riak_kv and
were changed there.
Add basic lww register

Either user provides a timestamp, or we do (but don't recommend
user mixes both operational types)
Correct docs (does not use DVVSet.)
WIP commit of EQC for multi
Implements simple boolean flag that converges towards being enabled.

The CvRDT starts with the value "off", and has a single operation, "enable", which changes the value to "on", where it stays forever.
Implements simple boolean flag that converges towards being disabled.

The CvRDT starts with the value "on", and has a single operation, "disable", which changes the value to "of", where it stays forever.
 Add EQC test for the Map type

Add `init_state/0` to CRDTs that can be stored in Map.

Update Map semantics for remove; drop the value from the value list
concurrent update / add will create a new value on list.

EQC state uses actual CRDTs, should probably use CRDT Mod EQC funs.
The statem model for the Map is exactly that described in Carlos's
draft paper (a triple of {K, V, UUID}), it shows that our
optimisation matches the spec whilst being compact.

Also, the paper doesn't use Types in Keys, so `add` will fail if
the types don't match.