function cartesianPower( x, n ) {
	if ( !isCollection( x ) ) {
		throw new TypeError( format( 'invalid argument. First argument must be an array-like object. Value: `%s`.', x ) );
	}
	if ( !isNonNegativeInteger( n ) ) {
		throw new TypeError( format( 'invalid argument. Second argument must be a nonnegative integer. Value: `%s`.', n ) );
	}
	return base( x, n );
}
Returns the Cartesian power.

@param {Collection} x - input array
@param {NonNegativeInteger} n - power
@throws {TypeError} first argument must be a collection
@throws {TypeError} second argument must be a nonnegative integer
@returns {Array<Array>} list of ordered tuples comprising the Cartesian product

@example
var x = [ 1, 2 ];

var out = cartesianPower( x, 2 );
// returns [ [ 1, 1 ], [ 1, 2 ], [ 2, 1 ], [ 2, 2 ] ]