use static allocation for TraceInfo

There is only a single TraceInfo struct during the entire run, so
allocating it dynamically does not offer any advantages.
Port externalcalls logging from timeR

Logs into <tracedir>/external_calls.txt.gz