Fix issues with unregistering nested records.

There were a couple of issues with unregistering nested records:

1) SC.ChildArray did not unregister nested records at all, so toMany
relations with nested records did not work properly.
2) When a child was unregistered from its parent, that did not propagate
to children of the child, leading to problems when nesting was several
levels deep.
3) There were two additional caches that were not being cleared when the
nested record was unregistered.
Fix calculations for (un)registering ChildArray records.

The previous commit incorrectly calculated which records to unregister
and register. All items after the passed in index need to be unregistered,
then all the new items should be registered, followed by the existing items
that were previously unregistered.
Fix drag and drop handling for nested records.

If the item that is dragged is a nested record, special handling is needed
because the data hash will be removed when the record is unregistered. We
need to read the data hash so it doesn't get lost.
Further changes to unregister child records when a record is unloaded.
Propagate status changes to child records.

Since nested records are now being properly unregistered, the status of
nested records was getting stale, leading to exceptions because the status
was still set to SC.Record.EMPTY.
Modified unregisterChildFromParent so it can safely be called on any
storeKey, even if it is not a child record.
Fixes typos and jshint warnings.
Closes #863  Fixes merge conflicts and removes extra cycles of calling `unloadRecord` on children and `unregisterChildFromParent` on the parent.