REPL: Add processStmtSimple WIP
Refactor monadic runners

There are far too many variations of how to run a monadic action. This
commit consolidates a few things without changing the order in which the
monad functions are called.

Further refactorings:
* A monadic runner does not need to get a function and its argument
  separately, so stop doing that.
* runMainErrors contains too much and prevents sharing the call to runErrorsT.
* parseCommandLine destroys the result of its argument for no great
  reason.
Move runErrorsT into parseCommandLine continuation

This should be safe because parseCommandLine is in CPS and does not use
the Errors monad.

One must also ensure that the Errors monad transformer does nothing
special if the effects are not used; this seems correct by inspection,
but I imagine it would be cooler to establish that using monad
transformer laws.