Embedding Decision Trees and Random Forests in Constraint Programming