remove_instance_variable is private. Oops. Added clear_cache_keys! as a better alternative.
Removed the MessagePack dependency entirely. Added a default JSON serializer. However, MessagePack is probably a better choice in general. (Binary strings fail hard in JSON.) If MessagePack is present, it will be used automatically as the default serializer.
#is_cacheable? had its logic backwards.
The options for how things are cached by default has changed. cache_options should now have a key called :cache_by_default. This is another hash of options can be passed into a proc that is passed the dataset itself, as well as those options. The truthiness of the return value of that proc determines whether or not a query is cached by default.

This change was made as options were being added for the default and it was decided that a user defined proc gave this the most flexibility. Want to only cache queries with an ORDER clause? How about queries that SELECT *? Whatever. Write the proc. Go crazy,
CACHE_BY_DEFAULT_PROC seems to "fit" better in DatasetMethods. Also, cleaned up #is_cacheable_by_default? so that it won't barf if there is no cache_options[:cache_by_default].