Follow composer design

This branch is a complete overhaul of the solver internals. It now follows closely composer design, which allows easy comparison with composer's output for testing (see depsolver/solver/tests/scenarios content).