Render JSON results for the change table only using the index

Define a new type of field, STORED_ONLY, for storing arbitrary raw
bytes that cannot be searched. Add two fields of this type storing the
Change object and the list of SubmitRecord.Labels, which is exactly
the set of data needed to render a ChangeTable2. This avoids hitting
the database in the common case of rendering dashboards and search
results in the web UI, which may be costly on non-SQL implementations
Similarly we can avoid running and re-running the submit rule
evaluator.

This implementation has a minor bug in that changes to submit rules
may invalidate previously indexed labels, as can changing the set of
plugins with PredicateProviders.

There is substantial collateral damage to Reindex stemming from the
fact that indexing now depends on the submit rule evaluator, which in
turn requires pulling in plugins and hence a lot more Guice glue.

Change-Id: I3c10ed936eb9258e453c46f947abf35f5b8fb308
10 files changed