Get the boolean (truth) value of this Value. By default, we consider
any numeric value other than zero to be true. (But subclasses override
this with different criteria for strings, lists, and maps.)
Compare lhs and rhs for equality, in a way that traverses down
the tree when it finds a list or map. For any other type, this
just calls through to the regular Equality method.
Get the current value of this Value in the given context. Basic types
evaluate to themselves, but some types (e.g. variable references) may
evaluate to something else.
This version of Val is like the one above, but also returns
(via the output parameter) the ValMap the value was found in,
which could be several steps up the __isa chain.