Support poset-stratified programs that contain multiple syntactic strata.

That is, the previous coding assumed that within a given poset stratum, all the
rules in the program could be evaluated in any order. This produced the wrong
results when there was an ordering dependency *within* the poset stratum. Hence,
we know run all the syntactic strata in the program in order, once for each
poset strata.