Fixed basic DataStream functionality

This restores the missing DataStream functionality for working with data that's too large to fit in RAM.

The basic idea is that the user says `readstream(path, kwargs)` instead of `readtable(path, kwargs)` to generate a DataStream object. Then one iterates over the minibatches generated by the DataStream and does computations with them.