Separate out pipe into pipeThrough and pipeTo.

Credit to @spion for this idea; see https://github.com/whatwg/streams/issues/44#issuecomment-32196072. Closes #44, although there's more work to do designing and testing transform and duplex streams with this design (especially regarding error handling).