Real-time data events

This allow to get 'data' events from the first stream in the queue as soon as they arrive, and also use less memory. It's using an explicit buffer for each one, a better aproach would be to use the internal buffers, probably by using the pause() and resume() methods, but I haven't used them before. Also, by free, I've added a 'concat' method that allow to add new streams at the end of the queue if the previous ones hasn't finished yet.