Refactor KFDataStore to become a class cluster

The underlying core data stack will depend on which internal class is
used.

This allows a greater amount of flexibility and higher performance
depending on the applications needs.

The existing core data stack using many child contexts is now
abandoned, this was a terrible way of dealing with core data. Any
read/writes in a background can cause the parent context to block then
when the a managed object context on the main queue fetches or saves
data it can result in a lock.
Remove NSManagedObjectContext extensions

These no longer have any benefits
KFDataStoreInternal.h is a private header
Covert KFDataStore with unit testing
Dual stack doesn't support in memory stores
className isn't avilible on iOS
Call persistentStoreCoordinatorStoresDidChange when store changes
Allow adding custom local stores
Automatically try and migrate standard local data stores
Update KFDataManagedObjectContextDidReset notification
Handle ubiquitous import notifications
UI should listen for KFDataManagedObjectContextDidReset
Make the single stack stores handle persistent store changes
Create iCloud data store helpers

Closes #7
KFDataViewController doesn't need to listen for saves
Remove deprecated KFDataTableViewController methods