Rewrite the CoW frame/heap-structured store used in LoadForward.cpp as a templated structure, and implement another instance for DSE.

This replaces old DSE's per-instruction walk through the program, which had obvious n_instructions^2 complexity when most instructions live a long time, with a single walk using more complex state. The new algorithm's complexity is harder to characterise, but I expect it to perform significantly better in common cases. It is undebugged at this point.
Add improved DSE support for system calls, rather than assuming they always clobber everything.