Multiple contexts

Adjust the managed object context scheme to use two main application contexts.

The first is a private queue context that can be considered the "root" context. Any background saves that need to be performed can be done here.

The second is a main queue context that is a child of the "root" context. This can be used anywhere on the main thread.

These contexts communicate saves and merges between each other automatically.