Improve type location getters - fallback on array size expr
Be more lax on "%p" format checks
Un-mix declarations and statements

This attempts to preserve a (partial) C89 codebase.
Fix handling typedef name as an expression
Change type-die flag type in dwarf code gen
Warn on nonnull-attribute applied to function without ptr args
Formalised out_user_ctx()/vlamap container (+free memory)

(cherry-picked from feature/inline)
vla_cleanup() correctly accesses the vlamap

This was causing the entire cc1_octx to be free'd.
Debug emit logic is in with code-gen - for inline functions, etc

This temporarily removes the symbol-table / decl debug emission.
Emit per-decl (local) and per-argument debug information
Debug scope entry and exit
Only emit debug decls that have an out_val
Tidy symbol location emission - use decls throughout
Fix basic block output ordering - handle previous blocks properly

This makes sure all blocks prior to the one currently being emitted,
have already been emitted - this fixes problems with debug scope
labelling and function-end-returns embedded part way through a
function's asm.
Added debug line scope test
tools/debug_scope for showing debug scope in source
Pull out octx -> struct dbg conversion
Handle debug output for global-variables in local scope
Don't emit Dwarf lexical blocks for function-root scope
Emit a dwarf variadic-tag if a function is variadic