 @methodOf Array#
 @param {Function} [fn] An optional funtion used to evaluate each element to calculate its value for determining extremes.
 @returns {Object} {min: minElement, max: maxElement}
-### 
+###
 Array::extremes = (fn) ->
   fn ||= (n) -> n
 

    i = start
    result = []

    result.push(this[i.mod(this.length)]) while i++ < end

    return result

Returns a new array with the elements all shuffled up.

    a = [1, 2, 3]

    a.shuffle()
    # => [2, 3, 1]

    a # => [1, 2, 3]

@name shuffle
