Since I won't be able to complete my review before my vaction, let me at least give you some high-level feedback.
I admit I'm rather fond of the the radically simple, stupid way 'if' works. It's tied to C, which is just fine as long as all we need is C. Since we're going to need more than C, it's no longer fine. You replace the stupid C preprocessor expression string by a little language. The little language is less expressive than C preprocessor expressions. I agree with that choice. Simplicity is more important than expressiveness we may well never need. I'm a bit concerned about excessive OO boilerplate on the one hand, and keeping stuff factored cleanly on the other hand. Balancing act. We'll figure it out.