Fixes memory leak in the store when removing or replacing child records.

- The first time that you access a child record, the store updates four caches:  parentRecords (parentStoreKeys => [childStoreKeys]), childRecords (childStoreKeys => parentStoreKeys), records (SC.Record instances), dataHashes (SC.record backing attributes).
- Previously, if you set the child record to null or unloaded and reloaded the parent record or set the child record to a new child record and the child record doesn't have a primary key, the store would create duplicates on all these hashes, resulting in a memory leak.
- Now each time that you set the value of the child record on the parent, it clears the old child record caches in the store.
- See previous tests to prove the memory leak, by modifying the child record and checking the number of properties in the store's caches.
Fixes createNestedRecord for child records without primary keys.

- The previous version had some broken code, such as checking for the existence of id, although it is not set anywhere previously or passed to the function and creating an existingId variable for no purpose.  It also wrapped most of the function in a run loop, but I'm certain it's not necessary.
- The previous version would create a new record even if the child record has no primary key, which would auto-generate a new primary key and thus a new store key each time that same child record needed to be re-accessed.  It also did extra work fixing up the store by having to manipulate the id after creation.
- This version generates a re-usable id upfront for child records that don't have a primary key value.  This means that the id is unique to that child record and if the child record is unloaded and reloaded, even though it doesn't have a primary key, it will still get the same generated id and thus, get the same store key in the store, preventing the store from creating new objects and leaking the caches on the old child record.
- See previous unit tests checking that child records without primary keys keep or lose their id and storeKey properly when manipulated.
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.
Remove the cached record object when a record is unloaded.
Fix typo in property name.
Fix memory leaks in SC.CollectionView.
Allow SC.ObjectController to be destroyed.
Fix memory leaks in SC.CoreView.
Add support to SC.Button for firing the action on keydown.

Conflicts:

	frameworks/template_view/controls/button.js
Modified the developer warning for duplicate bindings.

There are legitimate use cases for overriding a binding in a child class.
I modified this code to remove the parent's binding in the child and use
the child's version instead.

The warning can now be turned on by setting SC.LOG_DUPLICATE_BINDINGS=YES.
Avoid duplicate properties in collection helper.

Clear out the options hash before passing it to the view helper to avoid
duplicating the properties when the view helper does another extend.
Resign first responder when view is destroyed.
Bumping to SC 1.9.0.4.