improve handling of grouping

Eliminated the `groupBy` param in WorkflowBuilder. GroupOps are now
created immediately, then rewritten in reduce. Unwinds are introduced
when needed (squash, build, before sorting, etc.) (Fixes #230; Fixes #351)

A proper merge for GroupOps, which renames all the values on both
sides. Several fixes to other merge cases.

New structure for OrderBy in the logical plan, which allows the planner
to avoid constucting any constants for asc/desc.

Coalesce ProjectOp after GroupOp and GroupOp/UnwindOp, and collect
smaller values when possible by moving fieldProjects into the groupop.
With `mergeGroups` gone, I’m pretty sure `sortBy` is the only place that requires the disjunction in the merge function result. Getting rid of that somehow would tighten up a lot of stuff. Thoughts for the future.