Fix client option handling in ChangeList

I8858147cf made the mistake of mutating the supposedly constant
OPTIONS set used by utility methods in ChangeList. This had the effect
of making the options for every single query actually be the union of
all options made by any query over the client app's lifetime. This is
particularly unfortunate because the "My Changes" dashboard includes
the REVIEWED option, which requires loading all change messages of
all returned changes from the database on every request. Given that
this information is not stored in the index, this is unavoidable if
we actually need the reviewed bit (as "My Changes" does), but it is a
waste for all other queries, including other dashboards, Related
Changes, etc.

Simplify option handling by having all ChangeList methods take an
explicit option list. Move the common options to a constant in
ChangeTable, since these options are "defaults" only from the
perspective of a change table, not from the perspective of other
callers. Make those options unmodifiable sets to avoid this kind of
abuse in the future.

Change-Id: I363581836b17622e8a50c24e502f7b9f8f7d1de4
8 files changed