[#73635598] revised data model

QueryItem split into QueryResultItem and Item. Items are unique, and
have a unique URL. Items can have multiple contexts, and can be
associated with multiple QueryResultItems. A QueryResultItem represents
an item in a QueryResult, and there can be multiple QueryResultItems
for a given URL. This allows us to record multiple contexts for an Item.