Change distribution representation from lists to streams. This will allow recursive distributions. All current tests pass, but I havne't yet actually implemented a recursive implementation. There seems to be a bit of a mismatch between a stream and a promise to produce a stream (we need the later for a recursive dist, I think). More thought required. Meanwhile, the PhD calls.