Recent work on how we generate standard repn (see #1073) seems to indicate that we may not need the NPV expression objects. Removing them would simplify not only expression generation and walking, but would make it easier for users creating their own expression visitors or solver interfaces.
We should document the edge cases that motivated the original introduction of NPV objects and then verify that new implementations of visitors / standard repn generation do not need the NPV objects. If that holds, then we can simplify the expression system.