Throw QueryParseException earlier from index queries

In Ia839eb21 due to sort key predicate rewriting we pushed the call to
ChangeIndex.getSource() to be lazy when reading the predicate.
Wrapping a resulting QueryParseException means that exception text,
which is intended to be user-visible, isn't. Instead, send the query
to the secondary index implementation earlier, and just re-process the
query if the sort key is rewritten.

This change means it is definitively inappropriate to kick off
searches in the background when getSource() is called as opposed to
when read() is called on the resulting source; document this fact in
the getSource() javadoc.

Change-Id: I8fb2ab25aaadf4eb0eba44c9eb31351be0748c0e
2 files changed