Store if we're an internal lvalue

i.e. for implementation only, such as structs in ?:
Comma expressions can be addressed
Avoid dereferencing structs in the backend for comma lhs
Statement expressions can be addressed
More logging in struct_todo.c
Avoid dereferencing structs for cast-to-void
Cast to void in struct_todo.c
All uncommented in struct_todo.c
Moved struct passing/returning out of struct_todo.c
Moved struct operations to test
gen_unused_expr() for side-effects and struct-gen avoidance

e.g.
struct A a = ...;
return a, 1; // don't want lvalue-to-rvalue for 'a' here

return i += 1, 5; // can't avoid full code gen here