Reuse of extracted terms in Flattener
Code cleanup

Added a SolverFactory to TheorySolver. No more "finding" of correct logic value
within solver objects, since there has to be a change to TheorySolver anyhow.

Made PropositionalSkeleton contain all of ConjunctiveNormalForm's functionality.

Removed debug code.

Removed LazyBasicSolver and "Fast"CongruenceSolver.

Removed debug/"visual" test cases which had no asserts.