Add a ChangeIndex interface and an implementation based on Apache
Lucene[1] to provide a secondary index, indexing things we won't or
can't index in the database.
As an example, index the list of modified files in the most recent
patch set of each change. Provide an EqualsFilePredicate for searching
on exact filenames[2], and teach the query builder to rewrite such
predicates as ChangeDataSources returning results from the index.
As this feature is still experimental but we want to avoid prolonged
feature branch development, protect it with an undocumented
index.enabled boolean in gerrit.config.
[1] http://lucene.apache.org/core/
[2] Uses the "file:" operator the same as RegexFilePredicate, but does
not support regular expressions in the search context.
Change-Id: Ie14ebe062d991eb9626f7b5d78b2d193c1bcb33f