Refactoring to not expose additional interface unnecessarily
Properly handling clone
Bubbling up a nested:change event to the parent model when nested models are added/changed/removed in a collection
Stop listening to nested collection events when clearing model
Allowing one to use rails-like nested attributes when calling toJSON.

By passing { nested: true } to the toJSON method like this:

	model.toJSON({ nested: true })

It will return the keys of all relations with a _attributes, and also the deleted models in the collection that were once persisted, with a { _destroy: true } attribute.

This conforms with Rails nested attributes support when using accept_nested_attributes_for in a ActiveModel model.