code: function(properties, value, equals, out)
    {
      var where = createWhere( properties, value, equals );
      var changes = out && out instanceof ModelCollection ? out : this.cloneEmpty();
  
      this.each(function(model)
      {
        if ( where( model ) && model.$hasChanges() )
        {
          changes.put( model.$key(), model.$getChanges() );
        }
      });
  
      return changes;
    }
docs: Returns a collection of all changes for each model. The changes are keyed
  into the collection by the models key. An additional where expression can
  be given to only check certain models.
  
  @method
  @memberof Rekord.ModelCollection#
  @param {whereInput} [properties] -
  See {@link Rekord.createWhere}
  @param {Any} [value] -
  See {@link Rekord.createWhere}
  @param {equalityCallback} [equals=Rekord.equalsStrict] -
  See {@link Rekord.createWhere}
  @param {Rekord.ModelCollection} [out] -
  The collection to add the changes to.
  @return {Rekord.ModelCollection} -
  The collection with all changes to models in this collection.
  @see Rekord.createWhere
  @see Rekord.Model#$hasChanges
  @see Rekord.Model#$getChanges