Add ValueByMemoryForRecord, which enables support for representing in-memory
struct objects.

Use ValueByMemoryForScalar for Atomic, Enum, and Pointer types.
Support RValAggregate by creating an in-memory object at the given address.
Add ValueByMemoryForArray, which represents ArrayType values in memory. This
handles ConstantArray, VariableArray, and IncompleteArray. For the latter two,
the number of elements is calculated from the size of the containing memory
area.

getValue() for in-memory values has been changed to require a const reference
to the seec::trace::ProcessState rather than the seec::trace::MemoryState.

Always print record Values by printing the child values, regardless of
initialization.

Change ValueByRuntimeValueForPointer so that pointers to structs which contain
flexible array members will never return a dereference index limit greater than
one (because in this case the extra memory should be occupied by the flexible
array member).