beginnings of if-else-endif logic

WARNING: does not compile under VS 2012 due to compiler bug ("fatal
error C1002: compiler is out of heap space in pass 2"). Works okay in
Dev14 though.
Don't do variable-interpolation inside the repl loop.

Do it in the command executor instead. This is because 'if' needs the
raw string with variable names to do its thing. This allows
short-circuiting parts of the expression that have side-effects.
do variable interpolation inside executor