Refactor WorkflowBuilder, using Fixplate.

Splits 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;
* fix issue #403 (order of projections matters);
* 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;
* simplify `objectConcat`;
* 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.
Merge remote-tracking branch 'upstream/master' into ready/refactor-WorkflowBuilder

Conflicts:
	src/main/scala/slamdata/engine/physical/mongodb/workflowbuilder.scala
Partial rollback of new objectConcat.

The abbreviated objectConcat had some issues, so this is a hybrid. It
keeps the logic of the short one, but special cases group-related concats.
Fixes re: Moss’ feedback.

* remove `toString` from rest of ExprOp (except `DocVar`),
* add result type to `side` function,
* replace a `flatMap` with a `join`,
* rename `meh` to `convert`,
* put `GroupContents` cases into the companion object, and
* improve `WorkflowBuilderRenderTree` (but doesn’t yet expand `ListMap`s).
Merge pull request #440 from sellout/ready/refactor-WorkflowBuilder

Split WorkflowBuilder into a number of case classes: