BETWEEN, a more mature approach

This is a work in progress.

`RANGE` is now compiled to construct an array of values.

`Between` is now handled as follows in the planner phases:
1. an `ExprOp` is constructed, but not yet used (not the correct one yet; there will be some work to represent all the expressions we support as exprOps, but I believe everything is in place to do this work). This expression will eventually be used to translate portions of the expression to JS for use with `$where`.
2. a `Selector.And` instance is constructed which is actually used.
3. the pipeline phase has a case for `Between` so as not to fail, but does nothing interesting with it. Not sure what we actually need there, if anything.
It doesn't type-check, in a way that I don't really follow:

```
[error] /Users/moss/slamdata/ws4/src/main/scala/slamdata/engine/logicalplan.scala:123: type mismatch;
[error]  found   : slamdata.engine.LogicalPlan[slamdata.engine.analysis.fixplate.Term[slamdata.engine.LogicalPlan]]
[error]  required: slamdata.engine.LogicalPlan.Read0
[error]     def unapply(t: Term[LogicalPlan]): Option[Path] = Read0.unapply(t.unFix)
```