Add simple sanity test for stackrestore handling.
Fix stackrestore handling.

Don't use the previous event offset that is stored in the event itself,
because it isn't restricted to the current function. Just search for the
event instead.
Add some testing options for seec-print.

-quiet avoids printing unmapped states when using -S.

-test-movement simply moves the state to the end, then
reverses to the beginning.
Don't print the number of known memory regions in printComparable(), because it
makes the output depend upon the number of environment variables present when
traced programs are run. Update all expected test cases accordingly.
Don't record zero-size memory state changes.
Don't panic about the initialization of memory regions for
FileWriteFromMemory events with zero size writes.
Add test for zero-sized writes to FILE streams.
Remove PreviousSame field from instruction events.

When rewinding instruction events, find the preceding event by searching the
execution trace for it. This is significantly slower, but in the future we'll
store the previous values in the state so that rewinding is faster and to
remove the need to store all values in the trace (similarly to how memory states
are stored on the state now). Removing this field significantly reduces the
size of many execution traces (combined with the previous removal of the
thread time field, up to 66% size reduction for uncompressed traces in tests).