Adds ordered relationship support.
This involves:
 - Adding a movedIdentifiers dictionary to CDEPropertyChangeValue
 - Treating the relationship as an NSOrderedSet instead of an NSSet where needed
 - Storing the index of any new objects or index changes when storing ordered property changes
 - Adds a unit test that swaps two items in a relationship and ensures the ordering is sync’ed
Fixes an array index out of bounds bug updating an ordered property.
Basic Ensembles support.
Added checks for incomplete events when the CDEPersistentStoreEnsemble is initialised. If mandatory events are detected, the ensemble deleeches. If there are non-mandatory events, they are deleted.
Added tests for the initial check for incomplete events. All pass.
Updated to produce the same order on all devices.  Drew’s description:

- Create a NSDictionary for all objects in the ordered set. The key is the global id, and the value is the initial index of the object before the reordering, ie, the original order before the change.
- Replace the dictionary values for the global ids that are moved with the new index.
- Sort the dictionary based on the index values. Where values clash, sort based on global id.

In practice there are a few more steps but the outcome is the same.
Added a (failing) test for consistent sync when confronted with changes on two devices simultaneously.
Switched to storing the indices for all items in an ordered set.  This gives consistent ordering in a conflict.
Changed the way the set of events included in a merge is determined. Previously, it would get the newly added events, and then add to those the events that are concurrent. Now we do that, but repeat the process, of adding concurrent events until there is no change. At that point, there are no events outside the set that are concurrent with events in the set.
Used the new incomplete-event registration in various parts of the framework to guard against crashes causing incomplete CDEStoreModificationEvents.
Merge branch 'master' of https://github.com/fdstevex/ensembles into ordered-rels
Cleaned up parts of the merged ordered-relationship code. Made a new property change type especially for ordered relationships, rather than just using the standard to-many type.
Cleaned up the ordered relationship tests a bit.
Fixed a bug where deletions were being handled with a performBlockAndWait: in cases where the context is confined (has no private queue).
Found a failing test for ordered relationship syncs. Has to do with deletions.
Fixed a bug in ordered relationship sync. The global identifiers of objects already existing in an ordered relationship were not being retrieved, so they were not available in the object-global id map. This caused the global id not to be found for some objects when sorting the relationship, and different orders could result on different devices.

Fixed by adding the global ids of all objects that are already members of the ordered relationship, whether or not they are actively involved in the change.
Added an error code for when an exception is raised.
Replaced a usage of NSEnumerator with a enumeratorObjectsUsingBlock:
Changed mutable dictionary to a NSMapTable with weak keys for storing willSave data in CDESaveMonitor. This way, if a context doesn't get to didSave, and is dealloc-ed, the map data is cleaned up.
Idiomatic on iOS now will include the selected tag in any new notes.