dialogueToIO :: Dialogue -> IO ()
dialogueToIO is included just to illustrate that it is possible to convert a
Dialogue I/O function to a monadic I/O function.
The implementation relies on
getChanContents to construct the lazy list of responses needed by
the dialogue IO function.