Remove the non-local change list from traced functions. This includes removing
the in-memory list from TracedFunction, as well as the functionality to
write/read the list to/from thread traces.

Add a new notification point, ArgumentByVal, called at the beginning of a
function to notify it of each argument that was received with the "byval"
attribute (the notification is called once per valid argument). This
notification maps to a TraceThreadListener method notifyArgumentByVal().

FunctionIndex now keeps a reference to the llvm::Function that it indexes,
which is accessible via the getFunction() method.

TracedFunction objects now store a reference to the TraceThreadListener that
they belong to. This allows TracedFunction objects to implement
getRuntimeAddress() for llvm::GlobalVariable and llvm::Function, which allows
TracedFunction objects to be used as sources for getCurrentRuntimeValueAs().
This change was required to correctly implement memory state copying for byval
arguments when we have access to both the call site and called function.
Furthermore, the signature of all getCurrentRuntimeValue() methods in
TracedFunction was changed to return a pointer to a RuntimeValue rather than a
reference.

TracedFunction objects now store a vector of memory areas that are occupied by
arguments which were received with the "byval" attribute. The following
methods were added to add and enumerate these areas:
 - addByValArea().
 - getByValAreas().

When a function ends, its "byval" memory areas are cleared.

When a function is notified of a "byval" argument, it determines the size of
the argument and adds the appropriate area to the TracedFunction object. If
the call site is known to us, then we find the pointer to the original object
and record a memmove to the received object. If the call site is not known to
us, then we record the received object's value as an untyped state change.

Move several TracedFunction methods out of line, specifically:
 - getContainingMemoryArea().
 - finishRecording().
 - addAlloca().
 - stackSave().
 - stackRestore().