Commit message:
analyzer: Store fewer objects to track analysis options
Previously, `ContextRoot.optionsFileMap` mapped each Folder to the analysis options File which applies to it. _Each Folder_. For example,
when playing around with the `analyzer_testing` package, which has one
analysis options file, but around ~20 subfolders, there were 20 entries
in this map.
Similarly, when `ContextBuilder._createOptionsMap` iterated over that
map, it would _read from disk_ the options file that applied to each
folder (which is all just the one options file), parse it, and store an
AnalysisOptionsImpl file representing the options that apply to each
folder.
This change flips the map, so that we track options files as keys, and
the folders they apply to as a list of the folders. This results in
fewer map entries, fewer File objects, and fewer AnalysisOptionsImpl
objects (which themselves have many nested fields, like plugin
configurations and enabled lint rules).