nicer errors for Pipeline phase

This just makes it easier to debug errors in the Pipeline phase. For example:

```
[info] x plan filter with between
[error]    'Left(Function RANGE cannot be compiled to a pipeline op
[error]      func: RANGE
[error]      args:
[error]        Int(10)
[error]          selector: None
[error]          expr:     Some(Literal(Int64(10)))
[error]          pipeline: \/-(None)
[error]        Int(100)
[error]          selector: None
[error]          expr:     Some(Literal(Int64(100)))
[error]          pipeline: \/-(None)
[error]    java.lang.Thread.getStackTrace(Thread.java:1551)
[error]    slamdata.engine.Error$class.$init$(errors.scala:10)
[error]    slamdata.engine.PlannerError$InternalError.<init>(errors.scala:106)
[error]    slamdata.engine.physical.mongodb.MongoDbPlanner$.slamdata$engine$physical$mongodb$MongoDbPlanner$$funcError$1(p```
You defined a show for workflow task or pipeline which used `Any`.

Instead of `toString`, use a generic type parameter `B` and require the `Show` constraint.