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.
Merge remote-tracking branch 'upstream/master' into ready/351
remove ProjectOp.uncoalesced, and the caller

Turns out the caller was dead code.
Merge remote-tracking branch 'upstream/master' into ready/351

Skipping integration tests for joins for now, because they're taking forever to fail
due to unnecessary projection under "value".
Merge pull request #392 from mossprescott/ready/351

improve handling of grouping