code: function(properties)
    {
      var resolver = createPropertyResolver( properties );
  
      for (var i = 0; i < this.length; i++)
      {
        var resolved = resolver( this[ i ] );
  
        if ( isValue( resolved ) )
        {
          return resolved;
        }
      }
    }
docs: Returns the first non-null value in this collection given a property
  expression. If no non-null values exist for the given property expression,
  then undefined will be returned.
  
  ```javascript
  var c = Rekord.collect([{x: 5}, {y: 6}, {y: 4}, {z: 7}]);
  c.first('y'); // 6
  c.first(); // {x: 5}
  ```
  
  @method
  @memberof Rekord.Collection#
  @param {propertyResolverInput} [properties] -
  The expression which converts one value into another.
  @return {Any} -
  @see Rekord.createPropertyResolver
  @see Rekord.isValue