When we load a file from the backend we collect metadata about the file itself
and about what information it contains and we store its contents _almost_
exactly as they come from the server. We have to do a small amount of ID
enrichment in order to build our representation of what information the file
contains, so we'll store the contents _with_ enriched IDs. (The ID enrichment
consists of things like adding a contest ID to a candidate's ID to build the
candidate's full, compound identifier.)

When we load a file we'll use its type, its URL, and sometimes its contents to
fan out to different multi-source selectors by type, marking the file as
a source for the atoms it provides.

figure out which atoms it can provide a value for, giving us a set of atom
keys. We will then update an "atom source metadata" atom for ecah of those atom
keys 
