[Refactoring] Move Dsymbol::ungagSpeculative() implementation in dsymbol.c
[Refactoring] Reorder TemplateInstance fields
[Refactoring] Remove unnecessary variable `func` in FuncDeclaration::toObjFile()
Distinguish speculative instantiation from gagged one to elide unnecessary symbol emission

Template constraint evaluation may instantiate exactly same symbols multiple times (eg. issue 10133 test case in test/runnable/funclit.d).
It would cause linker error "duplicate COMDAT" in Win64. To avoid the issue, dmd should elide unnecessary symbol emission.

If a template is instantiated in template constraint or static condition, it's marked as speculative instantiation.
If no other code at non-speculative context refer the instance, compiler will elide its code generation.
fix Issue 13299 - Property not found with typesafe variadic opDispatch
Merge pull request #3874 from 9rnsr/fix13299

[REG2.066a] Issue 13299 - Property not found with typesafe variadic opDispatch