[WIP] Implement support for secondary index reads

There might be *a lot* of index matches, so I think it makes sense to stream those too, or do a manual loop of 

`indexRead(n, startKey)`
1) fetch a chunk of index entries (limit n + n/4)
2) .then construct a (or multiple) query to check them in parallel (with IN, or with separate queries), do a Promise.all on them
3) .then add the successful ones to the result. Calculate how many are remaining, and return indexRead(remaining, lastIndexKey)

The first index read can be done using streaming, although on further reflection it might actually be more efficient to adjust the subsequent chunk sizes as outlined above. The subsequent queries would add a >= condition on the extra columns in the index (tid, perhaps more) for paging. The queries on the main data table are either one big IN query, or one query per index entry.