Implement the merging of data states.

This allows values and types to propagate through the program correctly so
that the preprocessor can figure out which operator implementations to
use, and eliminate branches we know can't be visited at runtime.
Fix up and test the Lifetime class.
Fix up and test the CallFrame class.
Test and fix up the Cell class.
Test most of DataState.

update_from_predecessors remains to be tested.