code: function without (object, toRemove) {
    toRemove = arrayify(toRemove)
    var output = clone(object)
    toRemove.forEach(function (remove) {
      delete output[remove]
    })
    return output
  }
docs: returns true if the key/value pairs in `query` also exist identically in `object`.
  Also supports RegExp values in `query`. If the `query` property begins with `!` then test is negated.
  
  @method exists
  @param object {object} - the object to examine
  @param query {object} - the key/value pairs to look for
  @returns {boolean}
  @static
  @example
  > o.exists({ a: 1, b: 2}, {a: 0})
  false
  > o.exists({ a: 1, b: 2}, {a: 1})
  true
  > o.exists({ a: 1, b: 2}, {'!a': 1})
  false
  > o.exists({ name: 'clive hater' }, { name: /clive/ })
  true
  > o.exists({ name: 'clive hater' }, { '!name': /ian/ })
  true
  > o.exists({ a: 1}, { a: function(n){ return n > 0; } })
  true
  > o.exists({ a: 1}, { a: function(n){ return n > 1; } })
  false
   
  Returns a clone of the object minus the specified properties. See also {@link module:object-tools.select}.
  @param {object} - the input object
  @param {string|string[]} - a single property, or array of properties to omit
  @returns {object}
  @static
  @example
  > o.without({ a: 1, b: 2, c: 3}, 'b')
  { a: 1, c: 3 }
  > o.without({ a: 1, b: 2, c: 3}, ['b', 'a'])
  { c: 3 }