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.
Fix 11745: Private unit tests can not be invoked.
Added unittests for issue 11745.
Remove dependency on Phobos from issue 10727 test case
fix Issue 11711 - Add __traits(getAliasThis)
Remove no-op dtor from Module
Use ternary instead of pointer arithmetic for C++ mangling prefix
Explicitly cast result to char
fix Issue 11748 - [ICE] function call as alias parameter of template gives ICE
Store RootObjects, not void*
Merge pull request #2969 from yebblies/mangleobj

[DDMD] Store RootObjects, not void*
Merge pull request #2966 from 9rnsr/fix11748

Issue 11748 - [ICE] function call as alias parameter of template gives ICE
Merge pull request #2939 from 9rnsr/fix11711

Issue 11711 - Add __traits(getAliasThis)
incorrect strlen usage

- causes overflow for empty string
Merge pull request #2968 from yebblies/mangleptrarith

[DDMD] Use ternary instead of pointer arithmetic for C++ mangling prefix
Merge pull request #2970 from yebblies/moduledtor

[DDMD] Remove no-op dtor from Module
Merge pull request #2967 from yebblies/manglecast

[DDMD] Explicitly cast result to char
Expand SINGLE and DOUPLE macros in lexer.c
Do all error emission in the frontend
[style] Remove trailing spaces