ReIndex now rebases local pending changes

#### Current Re-Index Behavior:

1. If it's the first time the bucket is sync'ed (that is, pre-existant data before integrating Simperium), the ghostData field is updated with the remote ghost.
 1. If the SPManagedObject instance implements the `shouldOverwriteLocalChangesFromIndex` selector (and returns YES), we override the local data with the remote data.
 2. Otherwise the object is marked for processing: the delta between the local data and remote data will be sent to the backend, resulting in the local version to be sync'ed to other devices.
2. If it's not the first time the bucket is sync'ed, and local ghost version doesn't match wit
h the remote version, local data is overwritten.

We'll be updating this behavior to be consistent with this [SPChangeProcessor enhancement](https://github.com/Simperium/simperium-ios/pull/292).

#### New Re-Index Behavior:

For each one of the objects in the index, we should:

1. Calculate Delta: LocalGhost > LocalMembers
2. Load the full Remote Member Data
3. If the delta from step (1) is not empty, then let's attempt to rebase + apply localDiff
3.1. Calculate Delta: LocalGhost > RemoteMembers
3.2. Transform localDiff: LocalGhost >> RemoteMembers >> LocalDiff (equivalent to git rebase)
3.3. Attempt to apply the Local Transformed Diff
4. Update the ghost with the remote member data + version