fix Issue 9946 - A UFCS disallowed in dynamic array allocation

`TypeQualified::idents` may have both `Identifier` and `TemplateInstance` objects. It should be treated correctly, as like as `Dsymbol::searchX` and `TypeQualified::resolveHelper`.
[Refactoring] Distinguish internal AliasDeclarations for selective/renamed imports

Keep `AliasDeclaration::import` even after resolving forward refs.
Implement proper UFCS name look up

In basic, UFCS name search looks for only symbols in module scope.
If the enclosing scopes have local imports, the imported overload-set and
selected/renamed symbols should also be considered in searching.

In my opinion, UFCS should not see the locally declared symbols (in
statement scope and aggregate member scope). So, currently, this is a
final step for the UFCS implementation.
fix Issue 6185 - Include non-global functions when resolving UFCS
fix Issue 9311 - shared library file extension incorrectly modified
fix Issue 10002 - calling std.algorithm.remove is impure
fix Issue 10004 - tuple comparison with side-effect should work
Fixes Issue 10011 - Wrong JSON "init" property output for class reference initializers.
Get rid of nasty macros in interpret.c (interpretCommon)
Merge pull request #1934 from 9rnsr/fix9946

Issue 9946 - A UFCS disallowed in dynamic array allocation
Merge pull request #1949 from AndrejMitrovic/Fix10011

Issue 10011 - Wrong JSON "init" property output for class reference initializers.
Follow the standard pattern to get the length of an array - this allows the pattern to be detected automatically
TypeQualified::idents are not always Identifiers, so stop pretending they are
Make __locale_decpoint const char *
Remove unused union from stringtable
Add missing default cases to some switches
Remove unused OutBuffer from ComplexExp
#define alias - stdmsg
Get rid of nasty EXP_CANT_INTERPRET cast hack
Fix Issue 6169 - [CTFE] pure functions cannot compute constants using functions not marked as pure

When running semantic on an expression used anywhere that forces compile time evaluation, use a scope flag to prevent purity and safety checks on function calls.
This allows better purity/safety inferrence as well.