fix Issue 8913 - Wrong code in IfStatement condition Expression

Type cast from `e : T[n]` to `T*` should generate `&e[0]`, not `&e`.
fix Issue 9315 - ICE (expression.c:4249, StructLiteralExp::getField) Tupleof of nested struct literal
fix Issue 9258 - opAssign with base class triggers "identity assignment operator overload" error
fix Issue 9416 - [REG][2.060 -> 02.061] DMD eagerly instantiates template parameter-less opAssign
fix Issue 9404 - Nullable is unusable with 2.061

Now, user-defined but non identity opAssign is just ignored in identity assignment resolving.

For the identity assignment operation, following four operations might be defined by the compiler.

1. If a user-defined identity `opAssign` is defined, it is used.
2. If the struct has postbit constructor, "copy & swap" operation is used.
3. If member-wise assignment is necessary, it is used.
4. Otherwise, assignment possibility is calculated from bitwise assignable of whole members.

As a conclusion, except for the case where the members have disabled opAssign, identity assignment will succeed in almost cases.
Clean up code for the __xopEquals generation

Use same way with the built-in opAssign generation.
Clean up test cases for issue 6174

Merged similar tests by making them parameterize.
fix Issue 6962 - Wrong Code With Scope Exit and Array Parameter, only with -O
fix Issue 9399 - ICE with nested function, template alias parameter, -inline, depending on order of source files
Merge pull request #1586 from WalterBright/b46

fix Issue 6962 - Wrong Code With Scope Exit and Array Parameter, only wi...
Merge pull request #1585 from 9rnsr/fix_assign

Issue 9258 & 9404 & 9416 - fix regressions around opAssign
Merge pull request #1382 from 9rnsr/fix8913

Issue 8913 - Wrong code in IfStatement condition Expression
Merge pull request #1587 from 9rnsr/fix9399

Issue 9399 - ICE with nested function, template alias parameter, -inline, depending on order of source files
fix Issue 9276 - regression(2.061): Forward reference error
Merge pull request #1588 from 9rnsr/fix9276

Issue 9276 - regression(2.061): Forward reference error
Merge pull request #1529 from 9rnsr/fix9315

Issue 9315 - ICE (expression.c:4249, StructLiteralExp::getField) Tupleof of nested struct literal
fix Issue 9434 & 9435 - regression(head): forward reference error

test/compilable/test9434.d and test9435.d are mutually dependent.
Merge pull request #1589 from 9rnsr/fix9435

Issue 9435 - regression(head): forward reference error
fix Issue 9244 - union containing pointers not allowed
Merge pull request #1591 from WalterBright/b46

fix Issue 9244 - union containing pointers not allowed