add JME function `satisfy`

`satisfy` takes a list of variable names and definitions, and conditions on those variables. It evaluates the definitions until the conditions are all satisfied.