Monad in which we can perform IO and tag dependencies. Mostly needed
because we cannot easily make a
MonadIO instance for
Q, and also because we want to avoid a dependency on mtl or
transformers. For convenience, we also pull
addDependentFile
into this typeclass.