[REG2.066] Issue 13294 - [IFTI] IFTI fails or works incorrectly for function with const and mutable `ref` parameters of most types

https://issues.dlang.org/show_bug.cgi?id=13294

This is more better implementation of enhancement 12290.
The first implementation #3353 was incomplete, so sadly it had introduced many IFTI regressions - 12403, 13026, 13180, 13223, and 13294.

Eventually I noticed that using typeMerge was wrong. It was the biggest root the regressions.

And, the enhancement 13127 was pointless change. Now it is mostly reverted.
This needs to be a class, not a struct.