Make CTFE error messages same as for const-folding

Two more commits from my project to unify optimize(WANTinterpret) and CTFE.
(1) Currently static assert uses optimize(WANTinterpret) for const folding. This has the side-effect of simplifying the expression before evaluating it, which makes error messages nicer. If we simply change to using CTFE instead, the error messages won't get simplified. So insert a call to optimize(0) before running CTFE.

(2) The error message for an attempt to read a runtime variable from optimize(WANTinterpret) is less informative than the CTFE one.
Improve the optimize() version, so that the test suite is ready for the change to using CTFE throughout.