Refactoring: move trace-collecting code outside the main runloop
Define PERL_NO_GET_CONTEXT for all files
Small speedup by removing conditional

Always saving the top of stack SV is safe (even if the stack is empty, the
memory for it is allocated) and the value is only used when the previous op is
an entersub (so the top of stack value must be a valid SV).
Add missing build require
"Fix" tests for machines with very low clock accuracy

Just a quick workaround, needs further thought.
Don't use Perl thread helpers, since they are no-ops on unthreaded builds
Don't free the context structure when it's allocated statically
Add '-g' flag to Build.PL to add debug symbols
Use separate frame type for Perl subs, XSUBs and the rest

Cleaner than storing empty strings and dummy numbers for frames that lack some
of the fields.
Use a separate StackFrame class for non-subroutine frames
Use a separate stack frame class for eval stack frames
Allow all tests to run in parallel
TODOne
Don't store templates as members of the report object

It's unnecessary, slow, and prevents from serializing the report using
Storable/Sereal.
When a file is closed with pending metadata/section changes, emit en empty frame

The API for processing profiles assumes all section/metadata changes are tied
to a frame; emitting an empty frame seems simpler than changing the code to
handle section/metadata changes after the last frame of a file.
Add sanity test for flamegraph graph
Store process/thread parent-child relationship in the profile file

It's going to be used on the aggregation side, to find the source code for eval
"" in the parent that create subroutines used in the child.

Also changes the unique file suffix into a sort of process identifier, hence
when a big file is split in multiple parts, it keeps the unique suffix and
gains a different ordinal.
Fix comment
Fix broken code keeping track of nested runloops

Since runloops can be exited via longjmp, and RAII+setjmp is not portable (f.e.
Visual C++ supports it, GCC does not), use Perl XCPT_* macros to handle the
in-tracing-runloop flag.

This loses the check in switch_runloop(), which was only partial anyway, since
only the tracing runloop kept track of runloop levels, and switching from
non-tracing to tracing runloop inside an inner runloop causes the same set of
issues.
No need to use gettid(), especially since it's not portable