Pure negative booleans should return ANYTOKEN during extraction

This was causing problems with queries of the form and(X, or(Y, not(Z))), where
the not clause was ignored by the termextractor, resulting in the presearcher
selecting Y over X as an indexable term, and hence docs that matched the not(Z)
branch but not the Y branch were not passing the presearcher.
Ignore MatchAllDocsQuery in boolean term extraction analysis

MatchAllDocsQuery in a boolean clause is always irrelevant to the presearcher.
Emit bare suffix from SuffixingNGramTokenFilter

This is to match queries of the type field:*
Change the way Boolean Clause branches with multiple terms are scored

The previous implementation combined weights from multiple terms in a branch by
multiplying them together.  This, it turns out, doesn't work very well, so we
move to a system where the score for a branch is calculated by a pluggable
WeightCombiner.  The default implementation selects the lowest weight of all the
branch's consitutent terms as the weight for the branch.