code: function(collection, out, equals)
    {
      var target = out || this.cloneEmpty();
      var equality = equals || equalsStrict;
  
      for (var i = 0; i < this.length; i++)
      {
        var a = this[ i ];
        var exists = false;
  
        for (var j = 0; j < collection.length && !exists; j++)
        {
          exists = equality( a, collection[ j ] );
        }
  
        if (!exists)
        {
          target.push( a );
        }
      }
  
      return target;
    }
docs: Returns a collection with elements that exist in this collection but does
  not exist in the given collection.
  
  ```javascript
  var a = Rekord.collect(1, 2, 3, 4);
  var b = Rekord.collect(1, 3, 5);
  var c = a.subtract( b ); // [2, 4]
  ```
  
  @method
  @memberof Rekord.Collection#
  @param {Array} collection -
  The array of elements that shouldn't exist in the resulting collection.
  @param {Array} [out=this.cloneEmpty()] -
  The array to place the elements that exist in this collection but not in
  the given collection. If this is not given - a collection of this type
  will be created.
  @param {equalityCallback} [equals=Rekord.equalsStrict] -
  The function which determines whether one of the elements that exist in
  this collection are equivalent to an element that exists in the given
  collection.
  @return {Array} -
  The collection of elements that exist in this collection and not the
  given collection.