Change streaming to use DeferredQueue

It's probably worth stashing the deferred you get back from `fill_queue()` on the `q` object so we have access to it should we need to cancel it or something. Perhaps `q.fill_d` or something?