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.
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.
WIP on integrating AFIncrementalStore

- Using an @xtremelabs fork of AFIncrementalStore for now

- Updated Podfile to represent the current setup. Will change later.

- AbstractPost is using AFIncrementalStore and Blog/Account are coming soon

- BaseXMLRPCManagedObject serves to provide defaults and get the XML RPC credentials in one place

- Disabled all other saving/Core Data in the app, as it interferes with AFIS. Saves are interpreted as updates/inserts.

- Removed validation constraints on data model temporarily, until all entities are hooked up
Revert "WIP on integrating AFIncrementalStore"

We're stepping back and using the existing Core Data contexts as per the
previous commit.

This reverts commit 0b18009b5c506bf29d61a1e68d45d9e0551c01f8.