nitg: introduce phases for Compiler classes

Move the compiler invocation in each specific module (with phases)

Move the command-lice processing to abstract_compiler.

What remain in final `nitg` modules is the imports and the selection of
the default engine.

Signed-off-by: Jean Privat <jean@pryen.org>
nith: introduce `nith` the ligHt Nit compiler

nith is just nitg with less features so, less phases to run,
and less code to compile (for a boostrap or test perspective).

Some numbers, note: `--skip-dead-methods` is used to produce less C code.

~~~
$ time nitg nitg.nit --skip-dead-methods
user	0m8.080s
$ time nitg nith.nit --skip-dead-methods
user	0m6.920s
~~~

Signed-off-by: Jean Privat <jean@pryen.org>
modelbuilder: name the main module like the first module.

It is the way done by the compilers, and a lot of parts use
`mainmodule.name` to name things when `-m` is used.

So, in order to not broke the compilers parts,
generalize the idea in phases.

Note: the implicit main-module have no projets associated, so things
should not use "<main>" to identify then.

Signed-off-by: Jean Privat <jean@pryen.org>
abs_comp: move call of `supports_libunwind` in the right place

Signed-off-by: Jean Privat <jean@pryen.org>
tests: update nitmetric becase the name of the mainmodule has changed

Signed-off-by: Jean Privat <jean@pryen.org>
tests: add nith

Signed-off-by: Jean Privat <jean@pryen.org>
Merge: introduce Nith, the ligHt  Nit compiler

It is just nitg with less features, thus should be faster to compile and should compile faster.
The result of the compilation should be the same however.

Independently, the series implements phases for the various nitg engines

Pull-Request: #385
Reviewed-by: Alexandre Terrasa <alexandre@moz-code.org>