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.
```js
return ParanoidUser.sync({ force: true }).then(function() {
  return ParanoidUser.bulkCreate(data);
}).then(function() {
  return ParanoidUser.destroy({where: {secretValue: '42'}});
}).then(function() {
 return ParanoidUser.undestroy({where : {secretValue: '42'}});
}).then(function() {
  return ParanoidUser.find({where : {secretValue : "42"}});
}).then(function(user){
  expect(user).to.be.ok
  expect(user.username).to.equal("Peter")
});
```