Correctly handle constraints with a mix of 1D and 2D properties.

This addresses some issues with 2D properties that I identified by adding more tests.

It also includes the compiled JS version of the parser whereas #5 didn't.