code: function (q, options) {
              options = options || {};
              var loadEach = isBoolean(options.load) ? options.load : true;
              //first find all records so we call alert the middleware for each model
              var ds = this.dataset.filter(q);
              return this._checkTransaction(options, function () {
                  if (loadEach) {
                      return ds.map(function (r) {
                          //todo this sucks find a better way!
                          return r.remove(options);
                      });
                  } else {
                      return ds.remove();
                  }
              });
          }
docs: Remove(delete) models. This can be used to do a mass delete of models.
  
  @example
  var User = patio.getModel("user");
  
  //remove all users
  User.remove();
  
  //remove all users who's names start with a.
  User.remove({name : /A%/i});
  
  //remove all users who's names start with a, without a transaction.
  User.remove({name : /A%/i}, {transaction : false});
  
  @param {Object} [q] query to filter the rows to remove. See {@link patio.Dataset#filter}.
  @param {Object} [options] additional options.
  @param {Boolean} [options.transaction] boolean indicating if a transaction should be used when
  removing the models.
  @param {Boolean} [options.load=true] boolean set to prevent the loading of each model. This is more efficient
  but the pre/post remove hooks not be notified of the deletion.
  
  @return {comb.Promise} called back when the removal completes.