sepcomp: add --skip-dead-methods

This avoid the generation and the C-compilation of dead methods

Signed-off-by: Jean Privat <jean@pryen.org>
sepcomp: add --semi-global to activate all semi-global optimizations

Some numbers:

Note that `user` is the bootstrapped time, therefore we measure both the
compilation time and the execution time.
I suspect this is stupid from the point-of-view of any scientific methodology;
but, anyway, it is numbers and people like numbers.

~~~
$ nitg --separate nitg.nit
user	0m11.228s

$ nitg --separate --semi-global nitg.nit
user	0m9.736s

$ nitg --erasure nitg.nit
user	0m7.800s

$ nitg --erasure --rta nitg.nit
user	0m8.280s

$ nitg --erasure --rta --semi-global nitg.nit
user	0m7.648s
~~~

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 perspective).

Some numbers (methodologically unsound):

~~~
$ nith nith.nit
user	0m8.392s

$ nith nith.nit --erasure
user	0m5.928s

$ nith nith.nit --erasure --inline-coloring-numbers
user	0m5.548s

$ nith nith.nit --erasure --rta
user	0m6.584s

$ nith nith.nit --erasure --rta --inline-coloring-numbers --inline-some-methods --skip-dead-methods
user	0m5.444s
~~~

For some buggy reasons, `--direct-call-monomorph` has issues without the
use of `transform`. :(

Signed-off-by: Jean Privat <jean@pryen.org>
nitgs: optimize compile_class_to_c for dead methods

Signed-off-by: Jean Privat <jean@pryen.org>
src/transform: do not detach things while itering

This invalidates the underlying iterator.

Signed-off-by: Jean Privat <jean@pryen.org>
rta: do not try to remove things from a set in iteration

Instead, register the things to remove then remove them once the
iteration is over,

Signed-off-by: Jean Privat <jean@pryen.org>
typing: remove `raw_arguments` as a cache

Because of transform and other potential optimization using astbuilder,
the typing phase cannot stores the raw_arguments and expect it is still
valid after subsequent phases.

The simplest way is to make `raw_arguments` a method that recollect the
correct nodes.

Alternative using some kind of cache invalidation seems to complex for not
a real gain.

Signed-off-by: Jean Privat <jean@pryen.org>
sepcomp: do not colorize dead methods

When RTA is available, dead methods do not need to be colored.

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