The Finite Domain Constraint Solver of SWI-Prolog