bootstrap:cprinter: fix printing of imported name with explicit path, e.g. 'math.PI'
bootstrap: revert pre,post,invariant,example syntax to accepting a block

We're back to:
	example
		a == b

pre,post,invariant are now going to be primitives, tightly linked to the
semantic checker, so it doesn't really make sense anymore to have a
function-like syntax.

'example' is likely going to get additional features which will make it
look more like a function definition than a function call.
bootstrap:unify: handle case like unify(String, *(`Random_container *`Any))

We did have similar logic in unify_generics(), which worked for cases like:
	unify((Slicebuf U32), *(`Random_container *`Any))

but the code for the case where one type is not a generic was just missing.
lib/n/builtins: rename 'Unsafe_{,un}signed' to Signed and Unsigned

These functions can assert, but that doesn't make them unsafe.
Especially because with the use of pre (semantics), we should be able to
often bypass the assert.

Unsafe_* would mean that there is no check at all. We don't actually
have exported methods for that yet. Not sure what their name should be.
lib/n/builtins: fix Bytes_compare for strings of different lengths
lib/n/builtins: rename and export fields in Range and Bounds
bootstrap:ssa: fix bug for form 'x, y = ...'
merge tuple
t00/bad22: failing example
Shift operators now take a Uint as RHS, instead of U32

This limits the number of conversions in typical code.
bootstrap:cprinter: mkdyn: skip non-concrete members
bootstrap:unify: handle ref compat through tuples
lib/n/builtins: Range: fix for ranges with Begin > 0
lib/n/builtins: Slicebuf,Stringbuf: share allocation logic

Slow down the exponential growth for large buffers, minimizing the
amount of memory sitting unused.

	Up to 256 elements, cap <= 2*cnt;
	up to 16k elements, cap < 3/2*cnt;
	up to 64k elements, cap < 5/4*cnt;
	Over 64k elements, cap <= 9/8*cnt.

Automatic shrinking is symmetric.

These values were NOT chosen after extensive benchmarking. They came out
of a hat.
bootstrap: fix deref operator checks for certain nullable and mercurial refs
bootstrap:autointf: rename gen_show() to gen_enum_show()
bootstrap/table: fix hard to hit infinite loop in hash table

With open addressing, the lookup for a given key ends when:
	(i) no entry is found at the computed index (no match).
	(iii) an entry is found, with the same hash and full key
	(match).

If the table is full, and we are looking for an entry that is not in the
table, this doesn't terminate.

To guarantee that the lookup terminates and fails in such a case, we
could track how many entries the open addressing scheme has pointed us
to, and stop when we have made table.size attempts. Or we can ensure
that there is always at least one empty spot in the table, this is what
the code assumed but got wrong in one case.

The bug was somewhat hard to hit (and never was): a hash table of at
least 64 elements, with the element count a power of 2, copied to
another table. Indeed,_copy() was using _init(new, _count(old)), we now
use _init(new, old->table.size - 1)).
bootstrap:common: add example for log2_ceil
bootstrap:cprinter: mkdyn: also skip reference interfaces
lib/n/math: (re-)enable in trun, and fix extensive bitrot