introduce and use variables_in_index_order/2
use existing variables in card/2 constraint, if possible

Example, previously:

   %?- sat(card([2,3],[A,B,C,D,E])).
   %@ sat(A=:=A),
   %@ node(197)- (A->node(196);node(194)),
   %@ node(194)- (B->node(193);node(191)),
   %@ node(191)- (C->node(190);node(182)),
   %@ node(182)- (D->node(159);false),
   %@ node(159)- (E->true;false),
   %@ node(190)- (D->true;node(159)),
   %@ node(193)- (C->node(192);node(190)),
   %@ node(192)- (D->node(173);true),
   %@ node(173)- (E->false;true),
   %@ node(196)- (B->node(195);node(193)),
   %@ node(195)- (C->node(178);node(192)),
   %@ node(178)- (D->false;node(173)),
   %@ sat(B=:=B),
   %@ sat(C=:=C),
   %@ sat(D=:=D),
   %@ sat(E=:=E).

Now:

   %?- sat(card([2,3],[A,B,C,D,E])).
   %@ sat(A=:=A),
   %@ node(11)- (A->node(10);node(9)),
   %@ node(9)- (B->node(7);node(6)),
   %@ node(6)- (C->node(3);node(2)),
   %@ node(2)- (D->node(0);false),
   %@ node(0)- (E->true;false),
   %@ node(3)- (D->true;node(0)),
   %@ node(7)- (C->node(4);node(3)),
   %@ node(4)- (D->node(1);true),
   %@ node(1)- (E->false;true),
   %@ node(10)- (B->node(8);node(7)),
   %@ node(8)- (C->node(5);node(4)),
   %@ node(5)- (D->false;node(1)),
   %@ sat(B=:=B),
   %@ sat(C=:=C),
   %@ sat(D=:=D),
   %@ sat(E=:=E).