Multiple compilation

This (long?) PR has a simple goal, enable the compilation of multiple main programs in a single `nitg` execution.

~~~
$ bin/nitg src/nit*.nit --dir bin
~~~

The point is to factorize the shared frontend parts.
The previous single command takes 49s, so it is nice improvement on the current 1m10s total required to compile each one independently.

Under the hood, only the frontend (parsing, model, typing, etc.) is shared.
It means that a full code generation phase (`run_global_phase`) is executed for each main modules.
This allows to mix platforms or having global optimizations specific to each main program.

~~~
$ bin/nitg contrib/pep8analysis/src/pep8analysis.nit contrib/pep8analysis/src/pep8analysis_web.nit
~~~

This PR is long because some issues in the current code needed to be solved first:
* some parts in coloration assumed that all entities of the model belong to the compiled programs.
* some parts in the ffi attach some compilation inforrmation to the model or ast objects
* some platform-related things modified values in the command-line options in toolcontext
Plutôt que "Do you prefer", je me serais plus attendu à un "Did you mean", mais c'est du détail.