Introduce a context manager

The context manager holds onto the main (UI) context, master context (background disk writes), and creates derived (scratchpad/background work) contexts on demand.
Saving a derived context naturally propagates the changes to the its parent, the main context. Any main context save also persists the data to disk in the background.
Remove unused propertiesToFetch

propertiesToFetch is not used unless resultType == NSDictionaryResultType, which cannot be used with a NSFetchedResultsController. This was also causing a periodic database corruption.
Combine merging of posts/pages into AbstractPost

- Cleans up very similar methods in Post/Page

- Moves merge handling to AbstractPost model, instead of within Blog model
Update comments/categories to merge in models

- Comment model merges remote comments

- Category model merges remote categories
derivedContext method name change + notifications

- derivedContext -> newDerivedContext

- Use notifications to monitor propagated changes to the main context to save it, and the master context.
Keep objects on same thread & only sync push once

- The only place createBlog is called is from saveSelectedBlogs, which already syncs the push notification info.

- Fix an issue where the blog created on the backgroundMOC was being used on the main thread. Calling syncBlogWithSuccess:failure on the same creation thread now.

RE: https://github.com/wordpress-mobile/WordPress-iOS/commit/eb3055a47b85d67d5270ad9dbbcd9c2aa95ead30#commitcomment-4417653
Fix up NewAddUsersBlogsVC + object faulting issue

- NewAddUsersBlogsVC and AddUsersBlogsVC were confusing. Ensured blog creation was the same as AddUsersBlogsVC

- Use existingObjectWithID instead of objectWithID, which on a second sign in after sign out was causing an error with Core Data.
Fix error with blog across contexts

- Using the original blog worked, but the context didn't recognize any changes therefore not making the objects permanent and causing other issues.

- Use ContextManager in BasePost.
Updates to ContextManager:

- masterContext -> backgroundContext. The backgroundContext is used for general background tasks as well as the disk writer context.

- mainContext is still used for the UI

- newDerivedContext is still available for usage, for either background tasks or as a 'scratch pad'.

There is a crash (EXC_BAD_ACCESS code 2) on iOS 6 on mergeChangesFromContextDidSaveNotification:, but not on iOS 7 that we're working on.
Work-around for iOS 6 core data merging issue
Set merge policies to avoid conflicts.
Use device orientation change due to modals

ViewControllers in the panel navigation controller stack don't rotate when there is a modal on visible.

Fixes #300
Don't override hasChanges for a NSManagedObject

- Interferes with merges on contexts
Collapse common saving methods
WIP on derived contexts across the app:

- Make sure contexts perform work in their respective queues

- derived context -> main context -> background writer context is the current architecture being used

- Account created on main context as there were many issues seen with a derived context

- Make sure any success/failure blocks are called on main thread as they could be executed on a derived context's queue

- Turned off blog syncing on blog creation, as blogs weren't saved yet and caused issues with contexts
Cleanup & fetch batch size on results controllers
Derived context in post Editor

Known issue:

- Uploading indicator doesn't show on the posts list, since the post falls out of scope. Upload still succeeds. We could use the post from the main context to work around this.
Use the context relationship to save down

- Save all the way down to the background writer when any derived context is saved.