In C89 only warn about non-constexpr init for aggregates
All symtable->decls accesses go through symtab_decls()

This was to find all places where symtable->decls is added to -
this was already factored into one macro - symtab_add_to_scope()
Symtables may now be transparent - fixes C89 nested scope

Previously in C89 an if-statement shared scope with its surrounding
code block, meaning gen_block_decls() would be called twice for the
same scope in the same function (without inlining).

Now an if-statement in C89 has a separate scope for gen_block_decls(),
but it is "transparent", so used for looping over other constructs,
but decls (and typedefs, as required in C89) pass through to the
above scope.

This means the following still works in C89:

if((enum A { X, Y })0){ ... }
f(X); // lookup finds X in current scope
Emit debug types for casts and compound literals
Explicitly error out on incomplete-struct return
Merge branch 'master' into feature/1st-class-structs

This brings in the C89 double-init bug fix.

Conflicts:
	src/cc1/ops/expr_cast.c
Check C89 array initialisation
Correct internal-struct-expression lvalueness
Fix struct lvalueness for "->" expressions
Fix string-literal lvalue type - char (*)[...]
Always generate reads for volatile struct lvalues
Ensure volatile scalars are always read and not warned as unused