Refactor to make a real FileSet.

Previously, a "FileSet" was a Map. I changed it so that it is a real
class that abstracts the Map. I moved the static methods of
FileSetOperations to this class.
Split FileStore into multiple interfaces.

I split FileStore into FileStore, FileStoreSink, and FileStoreSource. I
did this primarily because FileStoreFlickr can't act as a source so it
was awkward to throw from one of the methods.
Merge branch 'refactor' into develop