Avoid warning in case a logical file contains no samples

In which case it does not have a reverse mapping, and there is no reason in
forcibly creating one.
Collect source file not found warnings and emit them at the end

In case the aggregation is performed via (say) a cron job, and just spitting
out warnings is not the best way to report that information.
Paper over some errors/warnings that happen in case of unusal #line mappings

Should cover out-of-order and duplicated line mappings, needs further analisys
and a test file.
Update TODO
Reformat import lists
Move common code to utility functions
Change the structure for aggregator state directory

Each aggregator writes state files in a 'parts' subdirectory, parts are then
merged into the final report.

This to support a multiple writers/multiple readers scenario without locking.
Do not try to write the flame graph if there are no samples
Do not save useless data, and avoid a race condition

The metadata for a merged report is saved a separate step, there is no point in
re-saving it here.