Improve multi error handling
Fix send on closed channel
Send input datum from a separate goroutine
Fixes some deadlocks
Drop unused Expr.String()
Send End datum at the end of the pipeline
Unused by current filters, but will be useful for filters which need to
do something when a channel is closed.
Expr.String: add parentheses for unambiguity
Add multi commands and parentheses
`f1 & f2 > f3` splits the input and passes it to f1 and f2, giving f3
both outputs as input. Parentheses are used to override precedence.