A bunch of changes to make DualStorage more flexible/robust.

* Make standalone models (no collection) work with DualStorage.

* Model-only API:
  - New model-only API: `isDirtyOrDestroyed`, returns `'dirty'`, `'destroyed'`, or `false`.

* Collection-only API:
  - `hasDirtyOrDestroyed`, returns `true` or `false`.

* Model and Collection API:
  - `discard(what)`, discards dirty models if `what` is `'dirty'`, destroyed models if it's `destroyed`, or both if it's falsey. When used on a standalone model, data will be discarded only if the model is dirty, destroyed, or either, respectively.

* Allow specifying `remote` or `true` booleans on individual Backbone.sync requests