[Refactoring] Sync template constraint processing between TemplateDeclaration::matchWithInstance and deduceFunctionTemplateMatch
fix Issue 10074 - segfault in dmd

From 2.061, `deduceFunctionTemplate` has been using TemplateDeclaration::matchWithInstance to do IFTI more strictly.
However, `matchWithInstance` does not detect the recursive template instantiation inside template constraint, against `deduceFunctionTemplateMatch`.

Duplicate the detection mechanism into `matchWithInstance`.
fix Issue 10082 - ICE(e2ir.c) Multiple mixin template instantiations are not checked
Merge pull request #2610 from 9rnsr/fix11153

[REG2.064a] Issue 11153 - ICE during a diagnostic for missing return type
[Refactoring] Move exactly same matchArg functions up to base class
fix Issue 4018 - __FILE__ and __LINE__ as default template parameters not set to instantiation point per spec

Also fixes __MODULE__, __FUNCITON__, and __PRETTY_FUNCTION__
Add StructInitializer::fill to improve overlapped initializing check

- Right now `StructInitializer::semantic` retuens `ExpInitializer` with `StructLiteralExp`.
Update VarDeclaration::init by init->semantic result

The returned `Initializer` object may be different from `init`.
isEntirelyVoid should also work for StructLiteralExp
Fix TypeSArray::defaultInit for void static array type

Same as `TypeSArray::defaultInitLiteral`.
Right now StructInitializer::toDt is never called
Update StructLiteralExp::toDt for static array type field

StructLiteralExp::elements may hold the literal of the bottom type of static array field type.

struct S { int[4] sa; }   S s = S(1);
// (*sle->elements)[0]->op == TOKint64

This change is necessary to accommodate the case.
Update StructDeclaration::toDt

By using `StructInitializer::fill`, it could delegate the operation to `StructLiteralExp::toDt`.
Remove unused variables in StructInitializer
fix Issue 7727 - "static initializer" for non-static unions too
fix Issue 11132 - Odd diagnostic with C-style struct initializer when union field is present
fix Issue 11151 - Undetected overlapping initialization
Merge pull request #2613 from 9rnsr/fix10074

[REG2.061] Issue 10074 - segfault in dmd
Merge pull request #2616 from 9rnsr/fix10082

Issue 10082 - ICE(e2ir.c) Multiple mixin template instantiations are not checked
fix
Issue 7474 - ICE(cgcs.c) on instantiating a struct with field and destructor as tuple