Rewrite the whole ubiquityStoreManager for simplification.

Removed all UI aspects.
Removed localUUID
More consistent naming
Easier to use API
Cleaner, more transparent, more modern and safer code.
Uses (requires) iOS6's additions for working with iCloud.
Handles more edge cases (iCloud account switches, store deletion, etc.)
Fix the initial storeUUID determination.

[FIXED]     Now using a tentativeStoreUUID to store a new random UUID
            that will be assigned to the storeUUID as soon as the store
            has been successfully created or migrated with it.
Naming consistency improvement and compiler warning fix.

[IMPROVED]  Small naming improvements to be more consistent with the new API.
[FIXED]     A warning with regards to className not being a known selector.
Fixes to local store location and migration.

[FIXED]     Duplicate dot when adding extension sqlite to local store name.
[FIXED]     Don't try to migrate when the cloud store is not tentative (another device created a cloud store already).
[ADDED]     API for applications to test whether it's safe to seed the cloud store (if they wish to do so manually).
[FIXED]     Create the directory for the local store before opening it in case it doesn't exist yet.
Store URL observation fix + improved logging.

[FIXED]     Use a separate queue for observing changes to the store URL.
[IMPROVED]  Better logging in case no store was successfully added.
[FIXED]     Don't confirm tentative UUID when store was not successfully added.
Some cleanup + edge case / reset handling.

[ADDED]     Some API documentation.
[UPDATED]   Some cleanup.
[FIXED]     Migration safety check should test the right thing, not indirectly.
[UPDATED]   Store reset code consolidated.
[FIXED]     Make sure a new tentative store UUID will be used after resetting the cloud store.
[FIXED]     Save after cloud import to prevent losing changes.  Log errors verbosely.
Some cleanup + edge case / reset handling.

[ADDED]     Some API documentation.
[UPDATED]   Some cleanup.
[FIXED]     Migration safety check should test the right thing, not indirectly.
[UPDATED]   Store reset code consolidated.
[FIXED]     Make sure a new tentative store UUID will be used after resetting the cloud store.
[FIXED]     Save after cloud import to prevent losing changes.  Log errors verbosely.
Update the example to match the new API.
Migration strategies + more robust API + more robust store loading.

[ADDED]     Migration strategies:
                - iOS migration (as before) just uses the PSC's migratePersistentStore.
                - CopyEntities migration attempts to copy all the entities from the source store to the destination and rebuild relationships. (WIP)
                - Manual migration allows the application to do its own migration.
                - None migration does no migration and just loads the existing store or creates an empty one if one doesn't exist.
            This was needed mostly because the iOS migration used before is bugged in iOS 6.1.
[REMOVED]   Direct access to the PSC.  The idea is now that you init your MOC whenever the delegate is triggered for a successful store load.  This means much more reliable and consistent access to the store coordinator and only when the store is ready.
[ADDED]     Delegate method to learn when persistence becomes unavailable (because it's loading a new store).
[ADDED]     Delegate method for dealing with failure to load stores.
[ADDED]     Now the delegate must be set at init time to reliably receive the store load notification that's needed to init your MOC.
[IMPROVED]  The PSC is now locked whenever it is unavailable (store loading) to prevent the application from using it.
[IMPROVED]  Much more robust store loading code.
[IMPROVED]  Better logging and more information in delegate methods.
[ADDED]     Missing nukeCloudContainer which deletes the entire application container from iCloud.
Example updated.

[UPDATED]   Example now uses new PSC API.
[ADDED]     Example now indicates loading progress.
[UPDATED]   Example now handles unavailable MOC.
Some doc updates + put all notifications on the main thread.

[UPDATED]   Docs for delegate methods with usage recommendations.
Fix copy migration.

[ADDED]     Also log detailed errors.
[FIXED]     Create the cloud content directory if it doesn't exist yet.
[FIXED]     Same destination MOC after copy migration.
Rebuilding of the local cloud container.

[ADDED]     Support deletion of the cloud data on the device only (allowing it to be rebuilt from the iCloud data).
[IMPROVED]  More verbose error printing.
[IMPROVED]  Send willLoadStoreIsCloud to application when clearing the store so it knows the store is unavailable while it's being deleted too (in fact, whenever the PSC is cleared).
Improved store clearing on open error and do store reloading on import error.

[UPDATED]   Use clearStore to clear the PSC on error to make absolutely sure it's cleared.
[FIXED]     When a log import fails, reload the store to see if it's still viable to prevent the illusion that iCloud is still enabled and working while in reality it's broken.
Desync avoidance.

[ADDED]     Yield the context of errors in failedLoadingStoreWithCause:.
[UPDATED]   Documentation for error causes specify what the context will be.
[ADDED]     Desync avoidance: An iOS bug causes the cloud store to break irreparably when validation relationships are modified on two devices simultaneously.
            Desync avoidance avoids the issue from occurring by ensuring only one device can modify the cloud store at a time.
            The developer has a choice between different strategies that determine what to do when the device cannot obtain exclusive access (ie. another device has exclusive access).
[MOVED]     The current identity is now stored as state in the manager and not persisted in the user defaults.  There is no need to persist it any longer than the store is open for.
Change the way we store exclusive access tickets in the store to prevent overwriting another device's ticket changes.

[FIXED]     Overwriting of other device's ticket changes in KVS.
[FIXED]     Don't remove observation of KVS & application events when clearing the store.
[UPDATED]   When cloud store is unavailable, don't fall back to the local store; wait for it to become available.
Remove desync avoidance.

[REMOVED]   Desync avoidance strategies were unreliable and only worked while all devices are online.
More robustness.

[IMPROVED]  More robust handling of PSC locking and operation queues to avoid locking up under certain peculiar conditions (eg. deleting the container from another device or from the local device).
[IMPROVED]  Delete the stale store file when the store content is deleted to prevent corrupt cloud content from being created.
[IMPROVED]  Perform store deletion asynchronously.
[IMPROVED]  Notify the application immediately whenever the cloud store becomes unavailable so it can unset its MOCs and re-initialize its other persistence users (eg. fetchedResultsController).
A few doc updates.

[UPDATED]   A few more details about default implementations.
Detect cloud content corruption and inform the delegate.

[ADDED]     A method of detecting cloud content corruption.
[ADDED]     When the cloud content is corrupted, all devices unload the cloud store and inform the delegate.
            The cloud store will no longer be available until the corruption is cleared.
            The documentation specifies approaches the application can take to clear the corruption (WIP).