rta: store real types in live_cast_type

The separate compiler need to distinguish if the target is nullable or not.
So do not un-nullable cast types.

rta_metrics.nit is also updated to deal with the change of the static
type of the attribute.

nitg-g is also modified to use the new correct the RTA information
(this remove a workaround)

Signed-off-by: Jean Privat <jean@pryen.org>
nitg-s: add hardening_live_open_type and hardening_cast_type

with --hardening, add additional runtime-test on type resolution and
type checks.

Signed-off-by: Jean Privat <jean@pryen.org>
nitg-s: use the original type in type tests

RTA discovers original types, thus do not try to un-nullify some.

Signed-off-by: Jean Privat <jean@pryen.org>
nitg-s: use table_size instead of resolution_table to check live types

A future commit will remove resolution_table on live type that does not
need one (no formal types)

Signed-off-by: Jean Privat <jean@pryen.org>
nitg-s: compile_type_to_c generate partial tables for dead types

If a type is not live (instantiated) or not cast-live (someone try to
type check to it), parts of the generated C tables are empty (marked DEAD).

Signed-off-by: Jean Privat <jean@pryen.org>
nitg-s: do not color undead types

`undead` things are dead things but that are referenced in C code, thus
need a definition to permit the link.

undead types are no more colored but the C declarations need to remain.

Signed-off-by: Jean Privat <jean@pryen.org>
nitg-s: remove partial_types

rta and nitg-s now do the right thing for detecting and compiling type tests.
The partial types hack is thus useless.

Signed-off-by: Jean Privat <jean@pryen.org>
Merge branch 'hardening_types'