fix Issue 11718 - Unintended mangled names conflict of nested template structs

If a symbol has parent, the parent part of the mangled name should also be unique in each scopes.

Function symbols can have same identifiers in scope, so their parameters part must be always encoded in their mangled name to distinguish overloads.

When I fixed bug 9271, I had naturally expected that behavior. However sadly `mangle` function had had a bug.
Expand SINGLE and DOUPLE macros in lexer.c
[style] Remove trailing spaces
[Refactoring] Move StructLiteralExp::fill into StructDeclaration

Perhaps this is the most better design so it would be final move.
fix Issue 11510 - Relax restriction for overlapped pointer field access in safe code/during CTFE

Check overlapped field default initializations immediately after the struct size is determined.
fix Issue 11427 - anonymous unions break structs in @safe code
Merge pull request #2973 from yebblies/lexermangle

[DDMD] Expand SINGLE and DOUPLE macros in lexer.c
Expand AssignExp macro
Merge pull request #2974 from yebblies/parsemacro

[DDMD] Expand AssignExp macro
Merge pull request #2757 from 9rnsr/fix11510

Issue 11510 - Relax restriction for overlapped pointer field access in safe code/during CTFE
Merge pull request #2953 from 9rnsr/fix11718

[REG2.065a] Issue 11718 - Unintended mangled names conflict of nested template structs
Expand macros in lexer
Expand macros in parser
Remove macros in lexer.h
Clean up cutting ifdefs in template.c
Remove a whole bunch of cutting ifdefs
Hack my way across the finish line
Use factory functions instead of calling constructors from the glue layer
Use factory functions to create arrays from the glue layer
Remove SMALLARRAYCAP to match D implementation