always pass the options object around

This PR creates an options object if none was created by the user. This
allows for modification of options inside the setter as the object is
passed by reference.

This behaviour mirrors `Backbone.Model#set()`:
https://github.com/documentcloud/backbone/blob/master/backbone.js#L322