Fix a couple of possible deadlock conditions that can occur when using PipedRDFIterator

In the case where the producer thread dies before the consumer thread and the consumer thread is scheduled by the JVM onto
the same thread as the producer ran on the iterator would previously fail to detect and block indefinitely.  This case is now
detected and the consumer will error out after draining the queue.

In the case where the producer thread never produces any output or fails to call finish() the consumer would block idefinitely.
There is now a limit on polling attempts after which the producer is assumed dead and the consumer errors out.

In the case where one consumer closed the iterator while another consumer was blocking in hasNext() the blocked consumer would
never check if the iterator had been closed and would block indefinitely.  The consumer will now check for this situation and
error out appropriately.

git-svn-id: https://svn.apache.org/repos/asf/jena/trunk@1528482 13f79535-47bb-0310-9956-ffa450edef68