Handle missing timestamp values

If a run isn't recorded completely, the end timestamp
may be null. Convert that to an empty string.

Signed-off-by: Doug Hellmann <doug.hellmann@gmail.com>
add UUIDStack class

Signed-off-by: Doug Hellmann <doug.hellmann@gmail.com>
Add call_id to trace

Keep track of the unique calls into each function
so we can compute performance info, and keep the
lines executed within the function attached to the
right invocation.

Signed-off-by: Doug Hellmann <doug.hellmann@gmail.com>