PerformIO package:yeshql-core

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.