code: function () {
              var cond = argsToArray(arguments), tOpts = this.__opts;
              var clause = (tOpts["having"] ? "having" : "where"), clauseObj = tOpts[clause];
              cond = cond.length > 1 ? cond : cond[0];
              cond = this._filterExpr.call(this, cond);
              cond = BooleanExpression.invert(cond);
              if (clauseObj) {
                  cond = new BooleanExpression("AND", clauseObj, cond);
              }
              var opts = {};
              opts[clause] = cond;
              return this.mergeOptions(opts);
          }
docs: Performs the inverse of {@link patio.Dataset#filter}.  Note that if you have multiple filter
  conditions, this is not the same as a negation of all conditions. For argument types see
  {@link patio.Dataset#filter}
  
  @example
  
  DB.from("items").exclude({category : "software").sql;
  //=> SELECT * FROM items WHERE (category != 'software')
  
  DB.from("items").exclude({category : 'software', id : 3}).sql;
  //=> SELECT * FROM items WHERE ((category != 'software') OR (id != 3))
  @return {patio.Dataset} a cloned dataset with the excluded conditions applied to the HAVING/WHERE clause.