Return hex-encoded process id from the reader

Also, fix code assuming unsigned int is exacly 32 bits.
Fix crappy fragile test
Fix test that was depending on a BEGIN block in main being always sampled
Check the current frame is actually an eval frame before trying to use it as such
Perl does not always append "\n;" to eval()ed string

Also, leave a comment as to why we fiddle with the eval()ed string.
Remove useless COP line number for eval source code frame
Get eval name from PL_evalseq rather than from the first COP

There are some interesting corner cases like

    eval <<EOT;
        sub blah {
            # some code
    #line 127 "some.file"
            # more code
        }
    EOT

where the first COP in the eval code contains date derived from the #line
directive, but part of the code reports "(eval ...)" as the file name.

Since the reporting code will have to deal with embedded #line directives
anyway, always get the original eval name (from PL_evalseq) and ignore the data
embedded in COPs.

This only applies when saving code for all evals, since traced evals get the
correct file name.
Improve the code constructing unique sub identifiers

For now it only adds the file name to all unique sub names, in a followup
commit will add the definition line for special subs (__ANON__, BEGIN, ...).
Store the line with the first statement of a function in the profile

The main use is to have an unique(-ish) sub identifier for subroutines without
unique names, such as BEGIN and __ANON__, it's also useful in the report
generation.
Check that MY_CXT.eval_seq is set before using it to save eval code
Only hook entereval if we hook the runloop
Use scope hooks to save eval source code

While scope hooks are experimental, the solution is cleaner and more robust
than hooking entereval, and it also allows saving source code which is evaled
in modules that have been loaded before Devel::StatProfiler.
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
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.
Add an explicit close tag to mark the end of a sequence of split files

Will be used by the incremental report aggregator to discard intermediate
state for a "done" subprocess.