src: add some asserts on `super` related things

Signed-off-by: Jean Privat <jean@pryen.org>
rta: `add_super_send` uses live_classes instead of live_types

Otherwise, some not-yet-resolved open types can be forgot.

Signed-off-by: Jean Privat <jean@pryen.org>
auto_super_init: add annotation `nosuper`

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

Signed-off-by: Jean Privat <jean@pryen.org>
lib: prepare for new constructors

Signed-off-by: Jean Privat <jean@pryen.org>
contrib: prepare for new constructors

Signed-off-by: Jean Privat <jean@pryen.org>
src: prepare for new constructors

Signed-off-by: Jean Privat <jean@pryen.org>
tests: prepare for new constructors

Signed-off-by: Jean Privat <jean@pryen.org>
tests: update sav for modified files

Signed-off-by: Jean Privat <jean@pryen.org>
Merge: Fixes for supercalls

A bug was found while working on the new constructors.

Pull-Request: #672
Reviewed-by: Alexandre Terrasa <alexandre@moz-code.org>
Reviewed-by: Alexis Laferrière <alexis.laf@xymus.net>
Merge: Annotation `nosuper` to avoid automatic super call in constructors

A super-init-call is automatically added in constructors that do not invoke one (a la java)
But sometimes one may want to avoid calling a super-init.

Before, this could be done with a dead super

~~~
init do
  if false the super # a super is present, so no additional implicit super-init
  rest
end
~~~

Now, one can just write

~~~
init is nosuper do
   rest
end
~~~

that is more KISS I think.

Pull-Request: #673
Reviewed-by: Alexandre Terrasa <alexandre@moz-code.org>
Reviewed-by: Alexis Laferrière <alexis.laf@xymus.net>
Merge: Prepare for new constructors

With new constructors, attributes without default value are considered even if a constructor is present.

So, while ugly, the following code is currently working.
~~~
class A
   var attr: Attr
   init do attr = new Attr(foo)
end
var a = new A
~~~

With the new constructors, the attribute `attr` will be part of the signature of the new,

~~~
var a = new A # Error, expected one argument `attr: Attr`
~~~

So this series do some cosmetic changes to accommodate the future new constructors.
Most of these change make senes own their own since they:

* reduce the number of lines by removing useless init
* clarify the behavior of some attributes by adding a default value or a `noinit` annotation

More precisely, easy cases of the previous code is usually migrated into

~~~
class A
   var attr = new Attr(foo)
end
var a = new A
~~~

And complex cases into

~~~
class A
   var attr: Attr is noinit
   init do attr = new Attr(foo)
end
var a = new A
~~~

The few remaining very complex cases (ex parser) will be migrated latter, and a temporally new annotation `old_style_init` may be created for them.

Pull-Request: #674
Reviewed-by: Alexis Laferrière <alexis.laf@xymus.net>