Record argument byval memory areas into the trace, and restore in states.

Add a new event, ByValRegionAdd, which describes the address and size of a new
argument byval memory area for the current function. Record this event during
seec::trace::TraceThreadListener::notifyArgumentByVal().

Maintain a vector of MemoryArea objects representing byval argument areas on
seec::trace::FunctionState.

Add seec::trace::FunctionState::getContainingMemoryArea(), which finds the area
belonging to the function that contains the given address (if any).

Update seec::trace::ThreadState to handle adding and removing ByValRegionAdd
events, and to use the above getContainingMemoryArea() function rather than
directly using seec::trace::FunctionState::getAllocaContaining().