Add a basic sanity test for the data aggregation performed by the report
Only use normal Perl subs when gathering data for the package -> filename map
Add basic test for slowops report data
Avoid unnecessary dTHX
Basic section implementation

Includes APIs to start & end as well as a SectionGuard class that allows
auto-closing sections even when unwinding the stack in an exception.
Includes basic test. The API for reading this data is going to have to
be thought out better than this. Right now, any stack trace will contain
a reference to the main section-tracking hash as "active_sections".
Not horrible, I suppose.

Sections of the same name can nest and will be tracked by depth. But
that means you're basically left with deciding in application code
whether to care about this or not: One can manually implement semantic
differences between various levels of nesting by looking at the depth
that is in the active_sections hash. For example:

  { foo => 1, bar => 3 }

would mean that both the sections "foo" and "bar" are active, but "bar"
has been nested thrice. Usually, though, I suppose application code is
just going to care about whether it's within ANY "bar" section at all.
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.