Bugfix: reliably read all results from the index backends (Thanks mbiebl)

This resulted in some search results not showing up sometimes (depending
on the order in which the results are returned by the index backends).

The problem was that “select” is not handled in-order, i.e. the code
could read from “done” before reading from indexResults and thus ending
the loop before everything was read.

The new code avoids this problem by using “range” to iterate over
indexResults and closing that channel from a separate goroutine after
all index backend query goroutines signaled completion.