Record and recreate regions of known readable/writable memory.

Fix comparative operators on IntervalMapVectorIterator and
IntervalMapVectorConstIterator to be const.

Correct the StateCopied event to have the modifies_shared_state property.

Add two new events: KnownRegionAdd and KnownRegionRemove, used to indicate that
a known readable/writable memory region was added or removed.

Add a known memory region container to seec::trace::ProcessState.

Add methods to seec::trace::ThreadState for handling adding and removing of the
knew KnownRegion* events.

Add methods to seec::trace::TraceThreadListener for adding and removing known
readable/writable regions of memory. All adding and removing of these regions
should go through the TraceThreadListener, as it will also write the appropriate
event into the thread's trace. Update all areas that add/remove such regions
to use the TraceThreadListener interface rather than the process listener's
interface.

Update seec::trace::ProcessListener::getContainingMemoryArea() to check the
known readable/writable regions of memory.