modelbuilder: `run_global_phases` takes an array of modules

Instead of a single module.
Thus it can creates itself the implicit bottom module if required.

Signed-off-by: Jean Privat <jean@pryen.org>
modelbuilder: add parameter `given_mmodules` to `Phase::process_mainmodule`

`given_modules` is the list of explicitely requested modules.
From the command-line for instance.

Thus, global phases can chose to work with the bottom main module or
with each specific given modules.

Signed-off-by: Jean Privat <jean@pryen.org>
metrics/generate_hier: project_hierarchy.dot use given_mmodules

Instead of using the first loaded project

Signed-off-by: Jean Privat <jean@pryen.org>
Merge: Process mainmodule and mmodules

improve  `ModelBuilder::run_global_phases` and `Phase::process_mainmodule`.
Better API when more that one module is given (with an implicit bottom-module).

The 3rd PR of the #353 series

Pull-Request: #357
Reviewed-by: Lucas Bajolet <r4pass@hotmail.com>