WIP on a generalized search query language for Gnus
* lisp/gnus/nnir.el (nnir-search-parse-query, nnir-query-next-expr,
nnir-query-next-term, nnir-query-next-symbol,
nnir-query-peek-symbol, nnir-query-end-of-input,
nnir-query-parse-kv, nnir-query-parse-date nnir-query-parse-mark,
nnir-query-parse-contact): Functions for reading the generalized
search query language and parsing it into a sexp.
(gnus-search-engine, gnus-search-process, gnus-search-indexed): Base
classes for creating search-engine specific engine classes.
(nnir-run-search): Method for running one engine's search routine.
(nnir-search-transform-top-level, nnir-search-transform-expression):
Methods for transforming the parsed sexp query format into a
backend-specific string.
(nnir-search-indexed-search-command,
nnir-search-indexed-massage-output): Methods used by indexed
backends to retrieve their results.
* test/lisp/gnus/search-tests.el: Basic set of tests for the parsing
routine.