Re-introduce proper query string handling for serverSync and clientSync

[This line of code](https://github.com/jashkenas/backbone/blob/master/backbone.js#L1256) in Backbone triggered a bug after yesterday's PR merge in clientSync invocations where `options` was passed without a `data` property.

In those cases, the unconditional `options.data = _.clone(options.data);` line I had added was causing the options object to acquire a data property (albeit `options.data === undefined`), which was overriding the params.data property when processed in Backbone.sync.

This PR implements a conditional to only assign and clone options.data if it is defined, as well as adds more tests to guard against this happening in the future inadvertently.