Improved diagnostics for failing use of foreach

Alternative warning

Better message

Use comma instead of parenthesis for extra tip
fix Issue 13374 - Wrong template overload resolution when passing function to alias/string parameter
Merge pull request #3606 from nordlow/tupleof-tip

Improve failing foreach reporting for struct and class aggregates
fix Issue 13294 - [IFTI] IFTI fails or works incorrectly for function with const and mutable `ref` parameters of most types

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.
Merge pull request #3896 from 9rnsr/fix13294

[REG2.066] Issue 13294 - [IFTI] IFTI fails or works incorrectly for function with const and mutable `ref` parameters of most types
Merge pull request #3897 from 9rnsr/fix13374

[REG2.061] Issue 13374 - Wrong template overload resolution when passing function to alias/string parameter