Don't store templates as members of the report object

It's unnecessary, slow, and prevents from serializing the report using
Storable/Sereal.
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.
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.
Simplify aggregator code

Remove per-line inclusive/exclusive sample count for subs, and create per-file
objects while processing subs and not as a post-processing step.
Small refactoring
Add a method to merge a report into another
Add sanity test for flamegraph graph
Check the report is only finalized once
Add flags set to true when metadata/sections changed in the current frame
Record parent-child information while parsing profiles
Add class to incrementally aggregate profiles into multiple reports

Does not yet handle multiple reports, and the incremental part is not
tested, but it's a start...