Conduit

Hi Greg,

Another thing I'd like to do after the Lifted code is to add better integration of Conduits with Shelly, as a more principled way of interacting with input/output from sub-processes.  This could be the basis of a new implemenation for `-|-`, for example, which could allow for multiple processes to be connected.  It would use constant space and be equivalent to a shell-level pipe.

This PR also contains the commits from Lifted patch, so I recommend just looking at 031235e.

If this looks good to you, again I'll continue ahead.