Fix CRDTs by moving away from tracking state locally

* Testing improvements for data types
    * Establish datatype bucket types for testing in buildbot (`crdt-setup`)
    * Extend datatype testing to include round trips to server
* Move away from state-based logic to pushing all operations to Riak
    * Remove `dirty_value/1` from all data types
    * Maps now embed records representing their nested types instead
      of raw values
* Throw exceptions when "dangerous" CRDT operations are attempted and
  no observed context has been supplied:
    * Removing a value from a set
    * Erasing a field in a map
    * Disabling a flag

Yes. Definitely not `boolean()` in either case, thinko