function filled2dBy( N, clbk, thisArg ) {
	var arr;
	var a0;
	var i;
	var j;

	// Manually push elements in order to ensure "fast" elements...
	arr = [];
	for ( i = 0; i < N; i++ ) {
		a0 = [];
		for ( j = 0; j < N; j++ ) {
			if ( i > j ) {
				a0.push( arr[ j ][ i ] );
			} else {
				a0.push( clbk.call( thisArg, [ i, j ] ) );
			}
		}
		arr.push( a0 );
	}
	return arr;
}
Returns a filled two-dimensional symmetric nested array according to a provided callback function.

@param {NonNegativeInteger} N - number of rows and columns
@param {Callback} clbk - callback function
@param {*} [thisArg] - callback function execution context
@returns {Array} filled array

@example
function clbk( indices ) {
    return indices[ 0 ] + indices[ 1 ];
}

var out = filled2dBy( 3, clbk );
// returns [ [ 0, 1, 2 ], [ 1, 2, 3 ], [ 2, 3, 4 ] ]

@example
function clbk( indices ) {
    return indices[ 0 ] + indices[ 1 ];
}

var out = filled2dBy( 4, clbk );
// returns [ [ 0, 1, 2, 3 ], [ 1, 2, 3, 4 ], [ 2, 3, 4, 5 ], [ 3, 4, 5, 6 ] ]