Refactor HotSignal.pipe() so the sink keeps the signal alive

Fixes https://github.com/ReactiveCocoa/ReactiveCocoa/issues/1588.