Remove `proxy` config and `execute()` method from Request. Using Request mainly as a conceptual data container now.

Instead, Operation now takes the `proxy` it will be using to execute its requests, and calls upon the proxy directly instead of the now-removed `request.execute()` method.
Change Operation.wasCanceled() to Operation.wasAborted()
Add ManualResolveProxy, specifically for use with unit tests.
Remove 'JsMockito' from JSHint globals definition in tests that don't use it.
Changes to Model:

1. load(), save(), and destroy() methods now return an OperationPromise object instead of a raw jQuery.Deferred, allowing cancel() handlers to be attached, and the ability to abort operations. Each method now also accepts a 'cancel' callback function option as well.
2. Add 'loadsuccess', 'loaderror', 'loadcancel', 'savesuccess', 'saveerror', 'savecancel', 'destroysuccess', 'destroyerror', and 'destroycancel' events, for individual event subscriptions.
3. 'load', 'save', and 'destroy' events fire if their corresponding operations are aborted. This is to maintain the "catch-all" property of these events, and to make these events consistent with the 'complete' callbacks and 'always' handlers that can be attached to the returned promise. May alias these as 'loadcomplete', 'savecomplete' and 'destroycomplete' in the future.
4. load(), save(), and destroy() methods' promises are now resolved/rejected with the arguments: [model, operation] instead of [model, request].

Also add an abstraction, ModelPersistenceVerifier, to make unit testing the load(), save(), and destroy() methods and their events/callbacks/promise handlers much simpler.