step-by-step plug-in in the solver
a step-by-step plug-in decides what is the next step that the solver should take: index a new constraint (and pick which one), run a selector (and pick which one), run a propagator (and pick which one) etc.
In the main function of the solver, there are a bunch of worklists and a bunch of processors, a step-by-step plug-in simply chooses which processor to run on which element of the worklist