Describir: A Modeling Layer for Constraint-Programming Libraries