FEAT: handle replaces in Pool.
ENH: rewrite rules generator.

We completely rewrite the rules generator system to be in a class
similar to Composer's RulesGenerator.

We also added a small scenario framework which allows us to easily
generate reference scenarion to compare Composer vs depsolver.