Finalizing Nit objects on garbage collection

Rules for finalizable objects:

* They must be a standard Nit class (not an extern, nor a universal).
* They must not have any cycles, or else they won't be finalized.
* In practice, they should be used on small Nit objects acting as a thin layer around a resource. In other words, it is to be used in the Nity layer.
* `finalize` may be invoked more than once, and the underlying resources may also be used by other instances. This must be considered when implementing `finalize`.
* The finalizer will be called on garbage collection. It can be forced with `sys.force_garbage_collection`.
* When attempting to aquire a limited resource (for example, a file description) if you hit the limit, it is a good practice to force the garbage collection and try again.

----

Ça ne passera pas le bootstrap... Une fonction de gc_chooser.c fait appel à `gc_finalize` que est généré par le compilateur. Quelqu'un à une idée comment contourner ça? Si je génère le tout je n'ai pas accès à la macro WITH_LIBGC.

Je songe remplacer le `is abstract` de Finalizable par un corps vide pour éviter les surprises d'appel à une méthode abstraite par le GC.

Je vais aussi regarder pour l'appliquer sur certaines classes communes.
C'est risqué de mettre ca dans le ANew.  Pouquoi l'avoir pas mis dans le init_instance.  Ou mieux dans le NEW spécifique qui fait l'allocation?