Add logging

Readded a modified Collector Monad to work with MonadLogger
Minor restructure to facilitate logging (since it can only live in the Collector Monad)