Better handling of declaration initializations.
A cleanup of declaration initializations allows for nested initializer lists on structures,
unions, enum tag types and arrays. Initializations are now a variety of things ranging from simple
initialization bounded to simple declarations, through to array initializers, and designated
initializers, or a partial combination of all of these. Designated initializers are implemented
for structures only though.