prevent duplicate objects in the catalog

This manually does what `setIdentifier:` would do, with the exception of adding the object to `objectDictionary`.

When objects were read from the disk cache on startup, an object would appear once in the catalog for every time it appeared in one of the indexes. When scanning from the entry (instead of reading from the cache) duplicates did not appear.

fixes #1459
clarify the identifier when loading from the disk cache

Instead of duplicating parts of `setIdentifier:`, allow it to take a parameter that controls its behavior so it can be used in all contexts.
Merge pull request #1566 from quicksilver/dupes

fixes the duplicate entries in 1.0.0