Clean up Operation a bit with the use of the new OperationDeferred class.

OperationDeferred extends jQuery's Deferred interface to add an abort() method, and the ability to attach 'cancel' handlers. This frees up the Operation class from having to implement this functionality. This functionality can now be reused for an OperationBatch class in the future now as well.
Allow users to attach 'progress' handlers to Operation objects, to be notified of requests within the Operation being completed.

Also add events to Model and Collection for 'progress' events, as well as 'progress' callback options for load/save/destroy methods.
Add the ability for Proxies to notify of progress for a given Request.
Remove Lo-Dash from JSHint globals definitions in spec files.
Consolidate proxy handling for DataComponents (Models and Collections) into the DataComponent class.
Create static `normalizePersistenceOptions()` method in DataComponent, which is now used to normalize the `options` object passed to all of the Model/Collection "persistence" methods (load/save/destroy/sync).
Move `normalizePersistenceOptions()` method from data.DataComponent to data.persistence.Util
Use promise object to call options-provided callbacks in Collection.sync()
Add `notify()` method to Operation.
Fix include in DeferredSpec.js
Initial implementation of OperationBatch.
Working on sync() refactoring - replacing JsMockito in tests, and need to add PersistenceVerifier.
Fix issue where if an anonymous proxy configuration object was given to Model.setProxy(), it would not be instantiated for use in the load/save/destroy methods.
Couple of tweaks to comments in Collection.
Tweak to array concatenation in Collection.sync()
Update Lo-Dash to 2.4.0