Notifications to merge changes aren't required when using parent/child

Fixes #1608 

The notifications with merging were causing conflicts when background changes happened.  Made the background context totally private and renamed to root context to prevent any confusion.  Any background work that needs to be performed should be done with a newDerivedContext.  Changes made in the main thread context will force a save on the root context so they're persisted to disk.