Add System.IO.Streams.Process, *StreamToHandle functions, and misc.

System.IO.Streams.Process contains two new functions mirroring those of
System.Process, but using Input/OutputStreams instead of Handles:

  - runInteractiveCommand
  - runInteractiveProcess

Implementing this meant that System.IO.Streams.Handle got some new functions of
its own, supporting converting io-streams into Handles:

  - inputStreamToHandle
  - outputStreamToHandle
  - streamPairToHandle

System.IO.Streams.Combinators gets a couple of new combinators for tagging
behaviour onto streams when the end-of-stream is reached:

  - atEndOfInput
  - atEndOfOutput