Minor fixes

* refactoring of JsExprPhase that should handle bad arity, etc.
* eliminate DummyOp (which was just a placeholder for “unrooted” pipelines until I had all the merging stuff figured out)
* maintain PureOps, rather than immediately converting them to (Dummy-rooted) projects.
That's OK, I think constant folding is better handled at a higher level so we don't even have to run such queries (I believe the type checker produces this information, albeit it isn't used in the logical plan compiler -- which it should be).