Solves requirements by selecting a specific combination of implementations from feeds.
Uses limited backtracking to solve Requirements. Does not find all possible solutions!
Wraps two solvers always passing requests to the primary one initially and falling back to secondary one should the primary one fail.
Common base class for representing a single run of a solver.