Forward original options from CRUD methods to Backbone.sync, issue #3347

This PR forwards original options param supplied to model/collection CRUD methods to `Backbone.sync` via a fourth argument.

It helps when overriding `Backbone.sync` to provide a "catch-all" clause if an error, success (etc.) option was not supplied or in general to place generic post/pre sync processing in one place, rather than on every CRUD call.

This PR makes writing such code easy:
```
var originalSync = Backbone.sync;
Backbone.sync = function(method, model, options, origOpts) {

    // Attach generic error handler if not explicitly specified
    if (!(origOpts && origOpts.error)) {
        var error = options.error;
        options.error = function(resp) {
            if (error) error(model, resp, options);
            alert("An error has occurred: " + resp.responseText);
        }
    }

    // Similarly
    if (!(origOpts && origOpts.success)) {
        var success = options.success;
        options.success = function(resp) {
            if (success) success(model, resp, options);
            model.view && model.view.render();
        }
    }

    return originalSync.apply(this, method, model, options);
};
```
This approach was devised as a response to another PR #3347 and issue #3346