experimental version that allows sharing nodes between BDDs.

The node table is now kept *per variable*, which allows fast node
lookup even when the nodes come from different BDDs. This allows some
shortcuts in apply//4. However, it requires rebuilding the tables
occasionally so that nodes that are no longer reachable are removed.

Some (fixable) issues remain. Mainly: Unnecessary variables may appear
in residual goals, if they are still reachable via a local node table.
Second, this requires much more testing before it can be merged into
master. For example, suppose I erroneously add rebuild_hashes(BDD) as
the final goal in sat_bdd/2. bool_queens runs into this problem and
throws an exception. But we need many more systematic test cases that
find this problem too.

Performance on N-queens (2.33 GHz iMac):

   |queens(0)| = 1           after 0.00s
   |queens(1)| = 1           after 0.00s
   |queens(4)| = 2           after 0.08s
   |queens(5)| = 10          after 0.50s
   |queens(6)| = 4           after 2.55s
   |queens(7)| = 40          after 13.34s
   |queens(8)| = 92          after 69.97s
   |queens(9)| = 352         after 407.85s

Previously:

   |queens(0)| = 1           after 0.00s
   |queens(1)| = 1           after 0.00s
   |queens(4)| = 2           after 0.16s
   |queens(5)| = 10          after 1.11s
   |queens(6)| = 4           after 5.74s
   |queens(7)| = 40          after 32.29s
   |queens(8)| = 92          after 172.25s
   |queens(9)| = 352         after 962.64s
   |queens(10)| = 724        after 5538.98s
   |queens(11)| = 2680       after 40545.80s