[PATCH 12/15] cprinter: print forward_guards in the .c directly
[PATCH 13/15] rename CATCHUP_BEFORE_CURRENT to CATCHUP_BEFORE_CURRENT_SAME_TOP

Clarifies in which conditions in can be used.
[PATCH 14/15] try_insert_automagic_deref() should work with blocks

In a case like
	IF
	 BLOCK
	  BLOCK
 	   IDENT
	 BLOCK
	  NOOP
	 BLOCK
	  NOOP
[PATCH 15/15] new slices support

Slices used to be a library-defined type, with no particular support from
the compiler.

Slices are now builtin types, with special support and semantics. Slices
are now seen as a kind of reference. The unification algorithm allows
for certain transparent conversions between slices.

We could allow references to transparently convert to slices of length
1. In any case, this is an operation that must be supported, whether
it is automagic or not.

There is no support for dyn slices yet. A dyn slice is an area of memory
whose elements have the same concrete type (but it's dynamically
unknown), have an identical size (but only known dynamically through fun
`any.sizeof) and who share the same vtable that is stored once in the
dyn slice object.

This patch also introduces the operator_at and operator_sub syntax, as
well as the range (and bounds) syntax.

Note: index_bounds and index_range are kept as separate types as:
bounds refer to a particular container (v.[2..] means "until the end of
container v") whereas a given range can be more logically used on
a different container (a set of bounds used on a different container can
yield a range of different size, for instance). In other words, with
index_bounds, 'count' is only defined for a given container. We couldn't
have index_range behave like this in general.
Newline escapes are moved to the next line for more precise control

Instead of
	let x = foo \
	bar

We want to make it possible to differentiate between:

	let x = foo
	\bar
	let x = foo
	\ bar

As spaces are sometimes more significant than usual in N, it makes sense
to move the escape character to the next line. And we've always
advocated for operators to be on the next line when breaking up a long
expression.

It's a little similar to the practice in some programming languages that
don't allow a trailing comma of placing the comma in a list at the
beginning of the next line (to facilitate the appending of new entries).