code: function(chunkSize, out)
    {
      var outer = out || [];
      var outerIndex = 0;
      var inner = outer[ outerIndex ] = outer[ outerIndex ] || [];
      var innerIndex = 0;
  
      for (var i = 0; i < this.length; i++)
      {
        inner[ innerIndex ] = this[ i ];
  
        if ( ++innerIndex >= chunkSize )
        {
          innerIndex = 0;
          outerIndex++;
          inner.length = chunkSize;
          inner = outer[ outerIndex ] = outer[ outerIndex ] || [];
        }
      }
  
      if ( innerIndex !== 0 )
      {
        outerIndex++;
      }
  
      inner.length = innerIndex;
      outer.length = outerIndex;
  
      return outer;
    }
docs: Breaks up the collection into an array of arrays of a maximum size (chunks).
  A destination array can be used to avoid re-allocating arrays.
  
  ```javascript
  var c = Rekord.collect([1, 2, 3, 4, 5, 6, 7, 8, 9]);
  c.chunk(4); // [[1, 2, 3, 4], [5, 6, 7, 8], [9]]
  ```
  
  @method
  @memberof Rekord.Collection#
  @param {Number} chunkSize -
  The maximum number of elements that can exist in a chunk.
  @param {Array} [out] -
  The destination array to place the chunks.
  @return {Array} -
  The array of chunks of elements taken from this collection.