Fix Issue 3918 - Parameter use before its use in an AndAnd expression with reals treats NaN as false
Merge pull request #3812 from yebblies/issue3918

Issue 3918 - Parameter use before its use in an AndAnd expression with reals treats NaN as false
[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).