Wrote a single 'solve' function for using SMT solvers.

Which combines allocation of free variables, asserting the main query, calling
check, interpreting the model, and cleanup.

This better captures the way we use the solvers: we do everything all in one
go, one for each query.
Replace 'SolverInst' with a single 'solve' function.

Which better matches the way we use SMT solvers.
Don't use --force-reinstall flag for cabal.

Because we shouldn't need it anymore.