Add TemplateInstance::tnext to construct instantiation dependency graph

To detect speculative instantiations in codegen phase, `tnext` is neccesary for the `test6()` case `runnable/link13350.d`. That's a big difference from the PR #2550.
Create builtin for popcnt.

As suggested by @klickverbot popcnt should be a builtin as it is now an intrinsic.
[Refactoring] Add Type::equivalent(Type *t)
fix Issue 13437 - [e2ir] ICE in e2ir.c 4616
fix Issue 6334 - Template is silently not instantiated
fix Issue 7553 - auto template param triggers mixin conflict
fix Issue 7849 - Manifest constants don't resolve the polysemous literal type
fix Issue 8462 - recursive alias error with function pointer
fix Issue 8724 - Throwing exception in constructor prints strange warning
Merge pull request #3986 from 9rnsr/worksforme

Add test cases for worksforme issues with git-head
Merge pull request #3984 from 9rnsr/fix13437

Issue 13437 - [e2ir] ICE in e2ir.c 4616
Merge pull request #3975 from redstar/popcnt

Create builtin for popcnt.
Merge pull request #3948 from 9rnsr/fix_tinst

Add TemplateInstance::tnext to construct instantiation dependency graph
fix Issue 6469 & 8864 - consistent semantics for variable initializer

- Issue 6469 - Compiler fails to initialize associative array: string->[string->string]
  If variable type is specified, its initializer should be recursively analyzed to fit the target type.

- Issue 8864 - Simpler syntax for array literal of structs from one argument
  By the recursive analysis, implicit struct constructor call is properly handled in `ArrayInitializer` elements.

But, for multi-dimensional block initializing of static array variable, the 'target type' should be determined before `init->semantic` call.
To do that, I added `checkMultiDimInit` and `canMatch` member functions in `Initializer`.
Add support for legacy opCall feature