stream: emit pipe and unpipe on readable

Prior to this commit, 'pipe' and 'unpipe' events would only be emitted
on the writable, i.e. the destination to where the readable was being
piped. Now 'pipe' and 'unpipe' will be emitted on both sides of a
pipeline.

Relatedly, if the unpipe was triggered by an error in the writable that
error is now passed to the unpipe event.