Caching datasets

A set of changes surrounding computing on datasets

1.  `Data`  is now `InteractiveSymbol`.  `Data` remains a user level function so the public API is unchanged.
2.  `Data('uri::/data/path')` creates `Data('uri').data.path`
3.  Because we now prefer working on database-like-things we also support computing on dicts of data resources
4.  The Server now accepts a single data resource, not a namespace.  However that single data resource can be a dict, which, by point 3, is now a valid computable-thing.  So the public API is unchanged
5.  We add a Cached Dataset thing holds a dataset and caches computations against it in a dict-like object.  This dict-like object can be a [`chest`](http://github.com/mrocklin/chest).