Use block-based enumeration to return results

This paves the way for more efficient skip, limit and unindexed
post hoc matching. Particularly for the latter, it should make it
simpler to only run the post hoc matcher on the minimum number
of results possible, rather than all the results as we currently
do.
Fix crash when querying with no indexes defined

This is a bit of a hacky fix. Ideally, we'd always have an index
defined over document ID, but it seems like an overhead to do so.
For now, therefore, fail.
Add tests for stopping enumeration over query results