Made Hits methods deal with Thread interrupt, so we don't keep fetching
all hits if the thread is to be interrupted
Improved HitsWindow so it does not cause all hits to be fetched.

- Added Hits.sizeAtLeast() to determine if there are at least n hits
without fetching all hits
- Made HitsWindow not call size() to avoid fetching all hits
- Made HitsWindow use a copy of part of its source Hits instead of using
subList (because subList doesn't allow us to change the backing list)
- Removed HitsWindow.number() method; overrode HitsWindow.size() method
to return the number of hits in the window.
Added batch mode for performance testing to QueryTool.