Undestroy method for paranoid models

Undestroy allows for restoring destroyed paranoid models. Mirrors the syntax of destroy, with both model (bulk) and instance options.

Implementing this without resorting to manual SQL required tweaking the query generator to allow for omitNull to be passed as an option with an individual query.
For some reason you have to wrap it in a function - still not pretty, but better 

```js
return this.User.create({username : "Peter", secretValue : "42"})
      .then(function(user){
          expect(function () {
            self.User.restore({where : {secretValue : "42"}})
          }).to.throw(Error, "Model is not paranoid");
      })
```