Extract partial DataRow impl into abstract class
Replace CriteriaBuidler.add call w/ addToCriteria

See comment.
Proj/constr producers can take extra argument

This new argument is a callable object that allows the producers to
create subconstraint.

This is to allow nested constraints. For instance, a
DisjunctionConstraint would create its subconstraints by calling this
extra argument. This is an OK solution that's easy to implement, though
I'd prefer some form of continuation+message passing between the high
dim module and the producer.