Turn the InterpreterMonad into a Program

This patch modifies the main interpreter monad so that it becomes a
Program (from the operational package). All IO operations are now
handled at the same place, in the Puppet.Interpreter.IO module.