Use the cancellation structure to have a timebased query cancellation.
Set fix version to clear up unmarked ones.
Reopen to set fix version.
First step: QueryExecution.setTimeout(long delayms) added and implemented.
QueryExecution.setTimeout(long timeout1, long timeout2)
for time to first result (from WHERE clause iterator) and time after that.
Rather than a thread, check the clock every so often in QueryIterartorBase.hasNext/.next.
Add .setTimeout to qQueryExecution and QueryIterator.
Default to zero - no timeout - no checking.