This was originally to improve the case when SpecConstr generated a
function with an unused argument (see Trac #4941), but I ended up
giving up on that. But the refactoring is still an improvement.
In particular I got rid of BothOcc, which was unused.