Thread::Queue: discard item if Pipe functor returns false

The Pipe functor in a 3-stage threaded queue can now return false to
signal that the corresponding item is to be discarded, rather than sent
through to the next stage. The previous behaviour only caused the
corresponding thread to stop processing, which is no use in most cases
where the Pipe functor is running over multiple threads, and the
termination of one thread would have no impact on the other threads or
the running of the queue - the only outcome would be fewer threads left
to do the remainder of the processing. At least with this change the
return value can be used for a potentially useful purpose - although
currently no application is making use of that feature.

Closes #20.