Cleaned up code
Split SingleRow plans into SingleRow and Argument

The logical plan SingleRow now signifies a plan that produces a single empty row.
When what we mean is the argument on the RHS of an Apply, the logical plan Argument
is used instead.
Conversely, NullPipe is split into SingleRowPipe and ArgumentPipe to make this difference clear.
Merge pull request #3461 from systay/argumentPlan

Clean up of code around NullPipe, SingleRow et al