Add a very basic visual test

It generates a report and asks to manually check that links/layout are correct.
Remove circular subroutine references in the report object

Replace the object reference in the caller/callee with the subroutine identifier.

Avoids the need for weak references, and simplifies the code required to handle
eval merging.
Add flags set to true when metadata/sections changed in the current frame
Add option to set the max file size at import time
Replace mkdir with mkpath
Add helper test function for tests testing the parent/child relationships
Add an explicit close tag to mark the end of a file/sequence of split files

Will be used by the incremental report aggregator to discard intermediate
state for a "done" subprocess.
Add a function to check whether Devel::StatProfiler is running
More concise test setup
Add a method to merge a report into another
Record parent-child information while parsing profile files
Add class to incrementally aggregate profiles into multiple reports

Still missing a way to collect all partial reports in a single file for load
speed, but the functionality is mostly there.
One-line fix to update the processed ordinal after adding a profile file to the report

...plus all the test jiggery required for aggregation tests to pass.
Collect and aggregate source code and genealogy data

During trace processing collects all eval STRING source code (and the process
id/ordinal in which it was evaled), and adds an API to find the source code for
a sample given a process id/ordinal/eval name triple.

Multiple eval()s using the same #line directive overwrite each other.
By default only allow a single process ID per report

Required in order to avoid confusion when multiple processes have evals with
the same name (which will be handled separately when merging reports).
Aggressively open and flush the header of profile files

uWSGI does a double-fork+_exit to daemonize, and without this change it breaks
the parent-child relationship between processes.

A better solution would be to accumulate parent-child relationships and only
flush them when writing some sample data, but this works for now and it's
simpler.
Map physical source code lines to logical source code lines

The mapping is an identity except for #line directives.

Overlapping ranges (which have no meaningful use...) will not be stored in any
meaningful way.

There is an explict sentinel entry mapping a physical line after the last line
of the file, to simplify code dealing with line ranges.
Implement eval uniquification

After aggregation, string evals are renamed using the source code (hash) as the
key, and their exclusive/inclusive timings call sites and callees are merged.
Small refactorings
Render eval source code in the report