Remove cached object ids when objects are unregistered
Check if object exists before trying to delete it

An object could be already deleted according to delete rules set
between entities.
Prevent re-inserting of existing objects with new identifier

Set mergeChanges to NO for executeFetchRequest: method since it's the
only one propagating newly fetched objects to the parent context,
because it causes additional/duplicate API calls the next time the main
context is saved.
Merge commit 'a9f1c0d3402dd01e2397b995cbf1f91e871d3e30'