Merge ProjectOps without lEft/rIght

(when possible). This defines a general `merge` on Reshapes that will
combine them into a single Reshape _if_ the fields are either disjoint,
or if the fields in the intersection have identical expressions in both
original Reshapes. If Reshape.merge fails, we fall back to lEft/rIght.

Currently this only affects a few cases, but #391 (unique temp names)
should make it more broadly applicable.

Fixes #388.
Merge pull request #394 from sellout/ready/388-projectOp-merge

Merge ProjectOps without lEft/rIght
Fix review issues.

* remove duplicated `inlineProject`
* simplify `_id` field check
* define IdHandlingRose in terms of the product type
* remove some debugging message
* fix ProjectOp rendering
Merge remote-tracking branch 'upstream/master' into ready/327-discard-id

Conflicts:
	src/main/scala/slamdata/engine/physical/mongodb/pipeline.scala
	src/main/scala/slamdata/engine/physical/mongodb/workflowop.scala
	src/test/scala/slamdata/engine/physical/mongodb/planner.scala