grammar: new production `array_items` to replace arg_list for literal arrays

Signed-off-by: Jean Privat <jean@pryen.org>
grammar: extends array_item to accept array extension elements

Signed-off-by: Jean Privat <jean@pryen.org>
parser: regenerate with comprehension arrays

Signed-off-by: Jean Privat <jean@pryen.org>
typing: add `AArrayExpr::element_mtype`

Signed-off-by: Jean Privat <jean@pryen.org>
typing: mark expressions that belong to an array comprehension

Signed-off-by: Jean Privat <jean@pryen.org>
interpreter: implements array comprehensions

Signed-off-by: Jean Privat <jean@pryen.org>
nitg: handle direct compilation of comprehension arrays

Because of `transform`, it is only used if compiled
with `--disable-phase transform`

Signed-off-by: Jean Privat <jean@pryen.org>
transform: introduce `full_transform_visitor` for complex transformations

Signed-off-by: Jean Privat <jean@pryen.org>
transform: transform array comprehension in simpler statements

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

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