A GuardArranger is initialised with a set of triple patterns, and can
then turn a set of constraints (plus a map giving the location of
variables) into an array of guards, where the i'th element of the
array is the set of constraints that can be evaluated as soon as
the i'th triple-pattern has been processed.