Introduce solve/3 to expose timeout as part of public API

I think it will be cleaner to keep the public api in the depsolver module rather than having clients call depsolver_worker_sup directly.