const_expr_zero() now handles CONST_ADDR/memaddr

This is needed now because (int *)0 changes const type from CONST_NUM to
CONST_ADDR, so const_expr_zero() needs to check if CONST_ADDR's memaddr
is zero.
struct-const-fold doesn't expect CONST_NUM

This is because ((struct A *)0)->abc is now converted from
{ CONST_NUM + offset } to { CONST_ADDR }
__builtin_offsetof() expects NEED_ADDR and accounts for offset
offsetof() test
cpp can optionally process __builtin_offsetof() (off by default)
__builtin_offsetof() doesn't lvalue-to-rvalue its operand
Prevent ICE from unfolded expression in offsetof()
Test offsetof() in union
Test offsetof into incomplete struct
Emit error on offsetof(..., bitfield)
Warn on offsetof(..., a.b.c[0].d...)
Propagate the non-constant expression in const_fold() calls
offsetof() correctly handles arrays
const_intify() allows string constants through