make /\ and \/ left-associative
faster NDFA --> DFA conversion, using association lists

Benchmark:

   :- use_module(presprover).

   run(L) :-
           length(Ls, L),
           portray_clause(L),
           foldl(eq(10), Ls, 1=1, F),
           time(valid(F)).

   eq(N, V, F0, V=N \/ F0).

Previously:

   %?- length(_, N), run(N), false.
   %@ 0.
   %@ % 1,887 inferences, 0.001 CPU in 0.001 seconds (96% CPU, 2422336 Lips)
   %@ 1.
   %@ % 13,900 inferences, 0.003 CPU in 0.003 seconds (99% CPU, 5450980 Lips)
   %@ 2.
   %@ % 65,567 inferences, 0.012 CPU in 0.012 seconds (99% CPU, 5669924 Lips)
   %@ 3.
   %@ % 338,329 inferences, 0.063 CPU in 0.068 seconds (94% CPU, 5333223 Lips)
   %@ 4.
   %@ % 2,186,116 inferences, 0.459 CPU in 0.834 seconds (55% CPU, 4757660 Lips)
   %@ 5.
   %@ % 18,919,837 inferences, 4.302 CPU in 5.137 seconds (84% CPU, 4398289 Lips)
   %@ 6.
   %@ % 210,203,459 inferences, 49.165 CPU in 63.178 seconds (78% CPU, 4275505 Lips)
   %@ 7.

Now:

   %?- length(_, N), run(N), false.
   %@ 0.
   %@ % 1,856 inferences, 0.001 CPU in 0.001 seconds (95% CPU, 2435696 Lips)
   %@ 1.
   %@ % 14,301 inferences, 0.003 CPU in 0.003 seconds (96% CPU, 5573266 Lips)
   %@ 2.
   %@ % 68,409 inferences, 0.011 CPU in 0.011 seconds (99% CPU, 6108492 Lips)
   %@ 3.
   %@ % 355,282 inferences, 0.057 CPU in 0.062 seconds (91% CPU, 6254745 Lips)
   %@ 4.
   %@ % 2,270,713 inferences, 0.365 CPU in 0.571 seconds (64% CPU, 6222666 Lips)
   %@ 5.
   %@ % 19,333,314 inferences, 3.101 CPU in 3.763 seconds (82% CPU, 6234178 Lips)
   %@ 6.
   %@ % 212,289,471 inferences, 34.670 CPU in 45.123 seconds (77% CPU, 6123214 Lips)
   %@ 7.