initial impl of SourceRepository

Added a file-based implementation of the SourceRepository interface. Does not
persist to disk at the moment, but passes first tests concerning adding and
removing sources from internal index maps.