Modifies pipe to pass highland errors through

Based on discussion in #136.

`pipe`ing to a Highland stream will now pass along any Highland errors instead of emitting them. Behavior is unchanged for non-Highland targets.

I also messed around with making `through` catch, wrap, and pass along any errors from `target`. It seems doable, but trickier; it'll probably end up being a separate thing. For now, `through` will pass along errors as long as the `target` is a highland stream, based only on the change to pipe, but its behavior for non-highland Stream targets is as before.