Add datatypes support

Adds support for Riak 2.0 datatypes (CRDTs).

Some interesting decisions made on this branch:

* Datatypes are fetched by the average user just as one would fetch a `RiakObject`, with `RiakBucket.get()`. This reduces the API surface and will make it easier to change Riak later (toward using CRDTs instead of `riak_object` internally). The downside is that we need to cache the datatype name in the `BucketType` that contains them, following a fetch of its properties.
* Mutations are all staged locally and the original value remains available at all times. You use the `store` method on the datatype to send it to the server, updates are not sent automatically. In contrast to the Ruby client, "batching" is the default behavior.
* There's a curious property `type_name` on all datatypes that gives a text representation of the type name, which is basically the lower-cased version of the class name. This was so we could do fewer imports and `isinstance()` checks in the transports, but it could also be useful to end-users.

Just to circle back to this, we decided it's best to raise an exception when removing items from maps/sets where no context exists.