Fix bug causing query terms to match document term suffixes

Query terms were right-anchored but not left-anchored, and as a result
would match if they were a *suffix* of any document term.  Fix this by
left-anchoring query terms.
Support quoted and implicit phrase searches

This adds support for quoted phrases as well as implicit phrases (like
"don't", which is considered two words).  Remarkably, this made the
code shorter (partially because I had to eliminate the optimization of
using term sets instead of ordered term lists to support phrases).
Support fields in free text queries

Projections can now return a mapping from keys to text and users can
refer to these fields in the query syntax.