Migration code improvement, esp. cloud -> local.

[UPDATED]   Unified migration code and refactoring of store loading.
[FIXED]     Cloud -> local should happen with migration too, not just copying.
[FIXED]     When migrating by copying data, don't copy ubiquity metadata: Local stores may not have it and target cloud stores have their own.
[FIXED]     Add cloud options when opening a cloud migration store.
[FIXED]     Synchronize KVS before accessing its keys to get more up-to-date values.
[IMPROVED]  Slightly improved logging output.
Fixes to deletion of cloud store and failure/corruption handling.

[IMPROVED]  Don't override behaviour by implementing -ubiquityStoreManager:failedLoadingStoreWithCause:context:wasCloud:
[IMPROVED]  Synchronize all persistence methods by moving them onto the persistence queue.
[IMPROVED]  Post UbiquityManagedStoreDidChangeNotification after removing the persistence store from the coordinator.
[FIXED]     Issue where another device might recreate a cloud store before we get to after deleting the store.
[FIXED]     Tentative StoreUUID overrides KVS now to fix the above by not unsetting StoreUUID when deleting the store.
[ADDED]     Attempt to recover the cloud store after failing to load it by downloading and reimporting it from the cloud content.
[ADDED]     When the cloud store can't be opened, mark it as corrupted to avoid permanently locking the user out of iCloud.
[FIXED]     NSErrors were in some cases not logged.