Fix reduce regression 13304.

https://issues.dlang.org/show_bug.cgi?id=13304

Also cover test case 10709.
https://issues.dlang.org/show_bug.cgi?id=10709

Truth be told, I'm not yet entirely sure *what* went wrong, and why this fixes the issue. It *seems* that the compiler was trying to actually CTFE-evaluate the `fun` call in `s = fun(s, e);`, whereas the `is(typeof(s = fun(s, e))` merely checks the semantics are correct.

I'm still trying to reduce the actual cause, but in the mean time, this (should) fix a regression.