The VAL_NO_VALUE enum variant and its associated NO_VAL macro were removed from the value type system. The NO_VAL sentinel is now represented as a VAL_OBJ with a NULL object pointer, eliminating the hacky "no value" type. Updated the interpret function's primitive call return check to detect this new sentinel by verifying both the type is VAL_OBJ and the object pointer is NULL, rather than checking for the removed VAL_NO_VALUE type. Removed the TODO(bob) comments referencing the hack.