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).