annotation: add `get_single_annotation` and `get_annotations`

Signed-off-by: Jean Privat <jean@pryen.org>
modelize_property: understand `noinit` annotation on attributes

Signed-off-by: Jean Privat <jean@pryen.org>
engine: skip noinit attributes on free constructors

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

Signed-off-by: Jean Privat <jean@pryen.org>
modelize_property: accept annotation `writable`

Signed-off-by: Jean Privat <jean@pryen.org>
test: convert writable to annotations

Signed-off-by: Jean Privat <jean@pryen.org>
modelize_property: accepts alternative name for setters

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

I do not know why is was forgot

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

Signed-off-by: Jean Privat <jean@pryen.org>
doc: remove doc/Makefile

Since there is no more doc to generate
doc: do not make the stdlib doc by default
modelize_property: add readonly annotation on attributes

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

Signed-off-by: Jean Privat <jean@pryen.org>
Merge: Stop making docs by default

I am not sure people use the generated doc (I often ^C); for those that use it is, just `make docs`

Pull-Request: #603
Reviewed-by: Lucas Bajolet <r4pass@hotmail.com>
Reviewed-by: Alexandre Terrasa <alexandre@moz-code.org>
Merge: add attribute annotation `noinit` to skip the attribute in inits

~~~.rb
class Toto
   var tata: Int is noinit
   var tutu: String
end
var t = new Toto("hello") # only tutu in the constructor
~~~

Pull-Request: #600
Reviewed-by: Lucas Bajolet <r4pass@hotmail.com>
Reviewed-by: Alexandre Terrasa <alexandre@moz-code.org>
Merge: understand writable as an annotation

~~~.rb
class Toto
   var x: Int writable = 5 # before
   var y: Int = 5 is writable # after
~~~

This should become the new way, so while an active migration is not needed yet, once this PR is merger, new code should use the new notation.

Bonus: writable accepts an optional agrument that is the name of the writer.
This allows the reserve the name `foo=` for high-level setters.

Eg.
~~~.rb
class Toto
   var x: Int is private writable(set_x) # generates `set_x` instead of `x=`
   fun x=(v: Int) do # `x=` is feee, so I can use it for a distinct method
      assert x >= 0
      set_x(v) # I use the generated `set_x` as a private internal setter
   end
end
~~~

Pull-Request: #601
Reviewed-by: Lucas Bajolet <r4pass@hotmail.com>
Reviewed-by: Alexandre Terrasa <alexandre@moz-code.org>
Merge: add the annotation `readonly` on attributes

`readonly` just generate no setter. So the value must be set trough the initial value.

Basically it is like the Scala `val` keyword.
Note that unlike the Java `final` modifier, the value cannot be set in a constructor (use a private setter instead if you need a restriction on the setter visibility)

~~~.rb
class Toto
   var a = new Array[Int] is readonly
end
var t = new Toto
t.a.add 5 # OK
t.a = new Array[Int] # Error: no `a=` in Toto
~~~

Pull-Request: #604
Reviewed-by: Lucas Bajolet <r4pass@hotmail.com>
Reviewed-by: Alexandre Terrasa <alexandre@moz-code.org>