join: wait for right stream to have data

read() may return null if the stream is waiting for data, not just if the 
stream has ended. Using the internal _readableState object, we can tell if the 
stream has ended.

Since this is not documented and therefore unreliable, we need to reimplement
sorted merge join as soon as possible. Once mixins can be functions that take
a Readable and return a Readable, we may be able to turn join into a function
that takes two Readables and constructs a new Readable that pulls from both
safely (i.e. using the documented stream API).