nitge: optimize compile_class_to_c for dead classes

Classes that are dead (interface and abstract) do not need the full
class structure (VFT an cie). Only fields for typing are keept.

Signed-off-by: Jean Privat <jean@pryen.org>
nitge: learn to use RTA if --rta is given

A new option `--rta` activate RTA optimization and
enable the use of some semi-global ones (like --direct-call-monomorph).

Signed-off-by: Jean Privat <jean@pryen.org>
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>