Refactoring around function semantic invocation.
fix Issue 5933 - Cannot retrieve the return type of an auto-return member function
fix Issue 7159 - Forward reference when casting auto return method
fix Issue 9377 - Link-failure regression cause by fixing issue 8504

The test is disabled only in win64 platform.
fix test result for issue 6661

Inherently, when you try to instantiate a template, the whole template
body correctness should be checked at the same time.

In this case, bug6661!(int).qutz is a normal function declared inside
template, so it should be instantiated at the same time with bug6661!(int).
Now, the inner `static assert(qutz(13).sizeof!=299);` runs the semantic3
of qutz by calling it. So the module level static assertion fails _correctly_.

But, `is(typeof(bug6661x!(int)))` still returns true incorrectly.
I think it is yet another known issue in current dmd implementation.
Merge pull request #1543 from 9rnsr/fix5933

Issue 5933 & 7159 & 9377 - Invoke function semantic3 correctly where it is required.