Deltablue formula recognition

This branch adds fancy processing so we can write DeltaBlue constraints more naturally. It converts equalities into formulas automatically (LHS <- RHS), so we can write multiple equalities and they are actually valid code.

e.g. instead of the old
```javascript
always: {
        solver: db2;
        ct.getTextString().formula([c.getValue()], function (v) {
            return Math.round(v * 100) + "";
        });
        c.getValue().formula([ct.getTextString()], function (v) {
            return parseFloat(v) / 100;
        });
    }
```
we can now write
```javascript
always: {
        solver: db2;
        ct.getTextString() == Math.round(c.getValue()* 100) + "" &&
              c.getValue() == parseFloat(ct.getTextString()) / 100;
    }
```