Use an intermediate representation to reinterpret the value in Target::paintAsType
Merge pull request #3726 from ibuclaw/paintnounion

Use an intermediate representation to reinterpret the value in Target::paintAsType
[Refactoring] Reduce uninitialize local variables
[Refactoring] Reduce indent level in loops
[Refactoring] Remove unnecessary SCOPEfree flag handling

It's properly handled in `Scope::alloc`.
Merge pull request #3944 from 9rnsr/refactor_scope

[Refactoring] scope.c
[Refactoring] fix indent in IsExp::semantic()
fix Issue 13350 - is(typeof(fun)) causes link error when template fun calls undefined reference

Evaluate the type in IsExp, then unspeculative declared symbols.
Merge pull request #3894 from 9rnsr/fix13350

Issue 13350 - is(typeof(fun)) causes link error when template fun calls undefined reference
[Refactoring] TemplateInstance::semantic()

- Remove a goto jump
- Reduce code indent level
- Use ModToStc in TemplateThisParameter resolution
[Refactoring] Add Module::rootImports() and use it in TemplateInstance::needsCodegen()

it would make compilation a little faster so `rootImports` cache the result.
[Refactoring] Remove the hack code introduced in #1760

AST identity issue has been properly fixed in #3383 (fceb16bbf7).
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.