Propagate the root directory to all objects

Avoids some objects having a root directory on load but not on save, some the
other way around, some having it in both cases.
Small refactoring in preparation to sharded aggregation
More refactoring in preparation of sharded aggregation
Support splitting a single report into multiple shards that can be aggregated separately

Can be used to perform aggregation from multiple hosts, in parallel, writing
the result to a shared filesystem and then performing the report generation as
the last step.
Fix handling of source files with ignored mappings

Before this change add_file_mapping/end_file_mapping would complain for files
with ignored mappings because ignoring mappings did (correctly) not setup some
data structures required by those functions.
Allow custom processing for more warnings caused by unusual #line mappings

Follow-up for Devel-StatProfiler-0.02-2-gdf8bf17.
Add an helper method checkng whether a file can be processed by the Aggregator

An helper to implement sharded aggregation for reports.
Add an helper method to get the list of shards used by the aggregator