Changed SolverContext type such that the code is pure in tests

Before that, IO monad was "hardcoded" into SolverContext, which gave possibility to do arbitrary input / output during dependency solving, even in testing environment. This pull request fixes that