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.
Remove dependency on Phobos from issue 10727 test case
fix Issue 11711 - Add __traits(getAliasThis)
switch case fallthrough is an error, but only enabled with -w
Merge pull request #2965 from rainers/issue11749

fix  Issue 11749 - switch case fallthrough error is enabled with -w, but cannot be made informational warning
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)
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
[Refactoring] Move StructLiteralExp::fill into StructDeclaration

Perhaps this is the most better design so it would be final move.