Restraint::evaluate() now always should return the correct answer
(before it could return garbage if not called from Model::evaluate()).
Internally, restraints now have a function
Restraint::unprotected_evaluate() which does the actual evaluation
(and is what you implement when you implement a restraint).
Restraint::evaluate() makes sure the model's score states are updated
before calling Restriant::unprotected_evaluate().