code: function(fnStr, options) {
      options = options || {};
      var fns = [
        this[fnStr].apply(this, [options])
      ];
      _.each(this.relationDefinitions, function(relationAttributes, relationKey) {
        var relation = this.get(relationKey);
        if (relation) {
          fns.push(relation[fnStr](options));
        }
      }, this);
      return Promises.when.all(fns);
    }
docs: ## BaseModel.prototype.applyToAll
  
  applyToAll applies function to this model & its relations
  @param  {String} fnStr   which function to call
  @param  {Object} options pass options to the called function
  @returns {Promise}         return a joined promise of the called functions