Always check pointer temporal IDs first, so that we can remove "may be caused by accessing an object that was deallocated" from the spatial error messages.
Make the CallbackFS decode each arguments string.

Encode arguments before making requests from the CallbackFS in StateGraphViewer.html.

Only send a hover notification from StateGraphViewer.html after a 50ms timeout, to avoid numerous hovers queueing up (which then sends a sequence of value highlights back into StateGraphViewer.html, causing it to pan around crazily).
Load source files as UTF-8.
Rewrite the recreation of memory states (seec::trace::MemoryState).

Rather than a collection of fragments, the memory state is now represented by a collection of allocations. Each allocation has two vectors holding the value and initialization of each byte in the allocation. Overwritten (or cleared) memory states (both data and initialization) are kept in the allocation, and thus the overwritten state records have been removed from the trace file.

When an allocation is removed from the MemoryState it is kept in a stack, and can be restored when rewinding the trace. Removing an allocation effectively clears the memory owned by that allocation (because the allocation is no longer active in the MemoryState).

This required a change to the recording of realloc calls that extend a memory allocation in-place, because removing the allocation and adding a new allocation would remove the memory state. A new event, Realloc, has been added to handle these kinds of realloc calls (if the memory allocation is moved to a different starting address, it is still recorded as a Malloc, Memmove, Free). While adding the Realloc event, some other changes to dynamic memory state recreation were made:
- A MallocState can now be resized (using setSize()).
- Allocator llvm::Instruction pointers can now be pushed onto and popped from a MallocState. When a Realloc is replayed, we push the active llvm::Instruction as the new allocator. When a Realloc is rewound we pop the allocator and the previous llvm::Instruction becomes the current allocator.
- MallocState objects are no longer created directly from ThreadState.cpp. ProcessState now exposes methods for manipulating the collection of dynamic memory allocations (listed below). When a MallocState is removed by removeMalloc(), it is kept on a stack to be restored by a matching call to unremoveMalloc(). Thus we don't have to search the trace to recreate the stack of allocators for the MallocState.
-- addMalloc()
-- unaddMalloc()
-- removeMalloc()
-- unremoveMalloc()

Add a test case to ensure that correct calls to realloc() are recorded and can be replayed (forwards and backwards) without tripping any assertions.