Refactor PromiseStream to be more pluggable, allowing for custom operators
Add terminal, lift and translate methods and converted helper methods to use them