A ConstantExpr class represents a full expression that's in a
context where a constant expression is required. This class reflects
the path the evaluator took to reach the expression rather than
the syntactic context in which the expression occurs.
In the future, the class will be expanded to cache the result of
the evaluated expression so that it's not needlessly re-evaluated.
All of our expression classes have names ending Expr; I don't think we should deviate from that convention here.