Fixes Issue 8717 - Private and Protected should be accessible from within
same module.
Merge pull request #1557 from AndrejMitrovic/Fix8717

Issue 8717 - Private and Protected should be accessible from within the same module.
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.