libtracker-miner: Prevent item queue handlers from running when blocked
libtracker-miner: Prevent item queue handlers from running when blocked

If we pop the next item from a queue and find that either that file or
its parent is still being processed, the item queue handler must wait
until the outstanding tasks finish and are committed.

In this case we stop the item_queue_handlers_cb() timeout from
executing, but it is often restarted early as there are many triggers
for item_queue_handlers_set_up(), and the callback then pops the file
again, discovers it is still blocked and reenqueues it. This is a waste
of time and also makes it hard to implement infinite loop detection
reliably.

We now remember the file that is blocking progress, and
item_queue_handlers_set_up() will not start the item queue handlers
until sparql_buffer_task_finished_cb() has been called for the file
in question.

outofbits/tracker,hoheinzollern/tracker,hoheinzollern/tracker,hoheinzollern/tracker,hoheinzollern/tracker,outofbits/tracker,hoheinzollern/tracker,outofbits/tracker,hoheinzollern/tracker,hoheinzollern/tracker,outofbits/tracker,outofbits/tracker,outofbits/tracker,outofbits/tracker