Added a replace method to the collection module.
Added attribute.list for transforming attributes of an array of ids into collections of models.
Added a move method to the collection module.
Moved the list modifier functions from the util module to the collection module since the colleciton module is the only place that uses it.
Refactored binding to a collection and listening to its change events into the base.bindToCollection method.
Changed the map attribute property to sync add/remove/reset actions from the destination collection back to the source collection.
Added the sparseSize method to the util module which returns the number of items in a sparse array (not including the sparse elements.)
Added support for sparse collections.
Created the list module which inherits from collection. It is a specialized sparse collection that can fetch itself incrementally and populate itself with models from a common repository collection.
Fixed a test in base-test.
Added the ability to sync changes made to a list. The changes are stored and synced with the server in batches. Syncing is automatic by default but can be disabled. Syncing is performed when a list has ab item added to, removed from, or moved within it.
Added tests for databind's foreach on sparse collections.
Changed the collection.url method to behave like model.url by supplanting attribute values into the url.
Changed list.parse to set its attributes with the json data.
Added a hasMoreItems attribute to list.
Merge branch 'master' into collection
Changed list to replace items on parse instead of adding them.
Changed the model's sync failed and deleted event handlers to be on the model itself instead of in the closure.
Changed collection.move to handle moving from and to the same index more efficiently by doing nothing.
Changed colleciton.move to only remove and add an item if both a to and from index are provided and there is an item at the from index.
Added the ability to specify the type of collection created by attribute.map.
Added collection.index which is a configuration property to set the index of each item in a collection.
Each item has an attribute set equal to its index. The name of the attribute is the value of collection.index.
If collection.index does not have a non-empty string value then the index is not set on the items.
Improved support for collection.move in attribute.map.
Changed list.url to supplant attribute values into the url.
Added a trackChanges property to the list module that when false prevents the tracking of changes that happen to a list.
Fixed some bugs in attribute.map where the transform and untransform functions would be called with the incorrect context.
Changed attribute.map to only listen to changes in the destination collection if an untransform function is provided.
Added a parse event to list.
Added the base.once method which listens to an 'on' event but is only called once.
Changed the collection module to set a collection attribute on items when it sets the item's index.