Split WorkflowBuilder into a number of case classes:

* CollectionBuilder – basically the same as the old WorkflowBuilder;
* ValueBuilder – holds a literal;
* ExprBuilder – holds some expression;
* DocBuilder – holds a flat projection; and
* GroupBuilder – holds some grouped structure – can be an expression, an
  accumulator (`GroupOp`), or a projection.

Also:

* ensure that we run `sbt` from the top of the repo in the `ready` script;
* fixes issue #403 (order of projections matters);
* fixes issue #405 (group by constant);
* fix a matcher that reversed the expected/actual sides in the diff;
* take `GroupOp` out of the `ExprOp` hierarchy;
* get rid of a broken Workflow.merge case;
* fix typers for distinct[By];
* fix “plan simple constant example 1” (prev. pending test);
* fix “plan complex group by with sorting and limiting” (prev. pending test);
* remove dead code (`FieldProject`) from SchemaChange;
* add lots of cases where WorkflowBuilder errors if we can identify a
  bad query statically;
* fail `ArrayLength` if called with a non-1 dimension;
* clean up some FIXMEs and TODOs (Or at least associate with issues when
  possible); and
* add a rewriteRefs helper function.

That probably misses a bunch, but it’s what I managed to catch in commit
messages along the way.
So, I did remove `case object Count` from `ExprOp`, because there is no `$count` expression. I felt like mapping the `Count` func to `ExprOp.Sum` in the planner was the right place for it, but it can make planner tests less clear (but otherwise, those less-clear tests would just end up in ExprOp tests, so it just pushes it from somewhere we’re not yet testing, to somewhere we are.

What do you mean “get rid of count entirely”? It’s in SQL, so we need it there and it seems like a useful function for the logical plan to offer, but Mongo doesn’t provide it, so I took it out of ExprOp.