query: introduce FileNameSet (#482)
Sourcegraph's new hybrid searcher sends around large ORs of filenames to
search for. FileNameSet provides an efficient implementation to
transport and query these sets of filenames.
We include an efficient gob implementation based on previous work around
encoding a more complicated map of strings.
Test Plan: Added unit tests. Additionally, updated sourcegraph to use
this implementation and ran its tests.