Fix Issue 9097 - Value range propagation to disable some array bound tests

Do not emit bounds check code if the index is statically known to be within bounds
CTFE: run semantic on global variables

Only seems to happen with forward-referenced globals, for example:
const int c23 = b23 * b23;
const int a23 = 1;
const int b23 = a23 * 3;
Do all interpreting inside CTFE

instead of in the optimizer
Entirely remove WANTinterpret from the compiler

It is no longer used.
Merge pull request #1493 from yebblies/issue9097

Fix Issue 9097 - Value range propagation to disable some array bound tests
Merge pull request #2136 from donc/future_of_ctfe

Do all interpreting inside CTFE instead of in optimize(WANTinterpret)