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.
Why's this one failing?