Refactor of ECIU code.

My first attempt at solving the ECIU was functional, but brittle, and
used more main memory than necessary.  It also wasn't as efficient as it
could have been as it re-solved a large number of cases.

For example, in a simple 2-stage case, the solver should need only be
invoked 4 times:
Stage:        1   2
             -------
Assumption    A   A
              A   B
              B   A
              B   B

However, the previous algorithm would solve A A, then turn around and
set the stage 1 variables to A, to solve the stage 2 for A.  In other
words, a redundant solve.

This new implementation uses a different approach to sharing data:
per-node dict pickles in files that store the period cost and stage
variable data associated with a set of assumptions.  This should make
the amount of used memory be about constant, at the slight speed expense
of reading, and writing files to disk.