fix constant clasifiers for EXPR_COMPOUND_LITERAL

compound literals with scalar types are constant if the initializer is
constant. For compound types they always degrade to the address of the
initializer object, which is constant in global scope or if it has a
constant type with all constant initializers.
fix warnings, add missing checks for variable initializers

Also attempt to keep the types in the AST despite initializers not being
allowed. Also fixes some crashes when initializing types not allowed for
initializers.
fix code generation for compound literals with scalar type
Provide all CopyB constructors with a volatility flag.