Fix: PipeSegment will not fail with CanceledException if canceled when it's already done
Reorganized imports
Added Source.take, Source.skip, and utility methods from Sink

E.g., (s: Source).foreach is equivalent to (s: Source) >>| Sink.foreach
Fix: Source will not generate error if cancelled once it's done