rework error parser to use own MonadError type class instead of own Either' data type.  this provides more flexibility in terms of monad stacking order while still avoiding the unwanted instances
rework whitespace-logging parser to also use own MonadError instead of Either'