use 'list-stream' as a base

some of this logic is now in [list-stream](https://github.com/rvagg/list-stream) although it's not and complex or specific as **bl** but it makes sense (I think) to use it as a base even though we have to override a bunch of the functionality.