Correcting lvalue-to-rvalue / array decay for C89
rvalue-array example
Added stret-containing-array test
Merge lvalue and expression decay
lvalue decay casts need to change the backend type
expr_is_lval is a virtual expr function

This allows structs that come from functions to assert themselves as
non-lvalues.
Compound literals are lvalues

This fixes use of array initialisers inside compound literals, where
previously the array wouldn't decay.
Handle unused or cast-to-void struct expressions
Move expr.op to expr.bits.op
expr_op knows if it's an array-notation access
Continue-after-error for &-expressions
Pass through "subscript" for a[b] warnings/errors
Continue after cast-to-array errors
Correctly handle expression/lvalue decay w.r.t C89/C99
Move rvalue-array test
va_start() doesn't decay the va_list
Merge branch 'feature/1st-class-structs-rvalue-array' into feature/1st-class-structs

rvalue-decay is now more formalised and standard-conforming.