Do implicit cast for ExpInitializers inside CTFE

Move the implicit cast inside CTFE, so that we're evaluating the
final value.
fix Issue 12138 - Label statement creates an unexpected scope block
Fix bug 7209: Stack overflow on circular enum with explicit type

Detect the error in the semantic pass. This slightly changes the error
message for one existing test (it was previously detected inside CTFE)
-- now the *first* circular definition generates the error, which makes
more sense.
Merge pull request #3594 from donc/circular_enum7209

Fix bug 7209: Stack overflow on circular enum with explicit type
fix Issue 11672 - default initialization of static array of structs with a single value fails
fix Issue 5810 - Struct postincrement generates 'no effect' error if used on struct member
Merge pull request #3605 from 9rnsr/fix5810

Issue 5810 - Struct postincrement generates 'no effect' error if used on struct member
Merge pull request #3604 from 9rnsr/fix11672

Issue 11672 - default initialization of static array of structs with a single value fails
Merge pull request #3602 from donc/ctfe_implicit_convert

Do implicit cast for ExpInitializers inside CTFE
Merge pull request #3603 from 9rnsr/fix12138

Issue 12138 - Label statement creates an unexpected scope block
Fix Issue 12824 - REG(2.066) ICE(statement.c) Segfault with label and static if
Merge pull request #3607 from yebblies/issue12824

Issue 12824 - REG(2.066) ICE(statement.c) Segfault with label and static if