exceedable simultaneous uploads and total file size

In XHR file upload, upload exceeding the number of the maximum
simultaneous upload files of a server setup and the maximum upload file
size (sum total value of two or more files) was enabled.
check volume option 'uploadMaxSize' on JavaScript side
Merge branch '2.x' into 2.x_n
Merge branch '2.x' into 2.x_n
Merge branch '2.x' into 2.x_n
Merge branch '2.x' into 2.x_n
Merge branch '2.x' into 2.x_n

Conflicts:
	js/i18n/elfinder.en.js
	js/i18n/elfinder.jp.js
Merge branch '2.x' into 2.x_n
Merge branch 'dropbox' into 2.x_n
Merge branch '2.x' into 2.x_n
inclusion of plugin mechanism & add hook point `upload.presave`

# Regist plugin action on elFinder opts

'[cmd Or hook point]' => 'Plugin.[plugin dirctory name].[call method]'

ex.
```php
$opts = array(
	'bind'   => array(
			'upload.presave' => 'Plugin.Watermark.onUpLoadPreSave',
		),
	'roots' => array(...),
);
```

# Plugin options give plugin section

ex.
```php
$opts = array(
	'bind'   => array(
			'upload.presave' => 'Plugin.Watermark.onUpLoadPreSave',
		),
	'plugin' => array(
		'Watermark' => array(
			'source'       => 'logo.png',
			'marginRight'  => 5,
			'marginBottom' => 5,
			'quality'      => 90,
			'transparency' => 90)
		),
	'roots' => array(...),
);

```

# Instillation location of plugin

```
php
 |- plugins
 |   |- [PluginName]
 |       |- plugin.php
 |- elFinder.class.php
```

# Naming convention of class name

* class elFinderPlugin[dirname] {}

# Hook points

## upload.presave

After completing upload, before a volume driver saves a file, it is
called.

It is called with a "path", "file name", "temporary file",
"elFinder object" and "volume driver object".

ex. plugin.php
```php
class elFinderPluginExample
	private $opts;

	public function __construct($opts) {
		$default = array(
				'key' => 'value'
			);
		$this->opts = array_merge($default, $opts);
	}

	public function registed_method
	                       (&$path, &$name, $src, $elfinder, $volume) {
		/**
		 * Allow change value of $path & $name.
		 * $path      file path (set when dirctory uploading)
		 * $name      file name
		 * $src       uploaded file path
		 * $elfinder  elFinder object
		 * $volume    Volume driver object
		 */
	}
}
```
add watermark plugin

# Connector configuration options

$opts = array(
	'roots'  => array(...),
	'bind'   => array(
		/* regist action, require */
		'upload.presave' => 'Plugin.Watermark.onUpLoadPreSave',
	),
	'plugin' => array(
		/* optional, default values are */
		'Watermark' => array(
			'source'         => 'logo.png', // Path to Water mark image
			'marginRight'    => 5,          // Margin right pixel
			'marginBottom'   => 5,          // Margin bottom pixel
			'quality'        => 90,         // JPEG image save quality
			'transparency'   => 90, // Water mark image transparency
			                        // ( other than PNG )
			'targetType'     => IMG_GIF|IMG_JPG|IMG_PNG|IMG_WBMP,
			                    // Target image formats ( bit-field )
			'targetMinPixel' => 200         // Target image minimum
			                                // pixel size
		),
	),
);
$connector = new elFinderConnector(new xelFinder($opts), true);
$connector->run();
[plugin:Watermark] fix PNG blending
[VolumeDriver] add options['plugin'] & method getOptionsPlugin($name)
[plugin:Watermark] support volume driver option "plugin"

# Connector configuration options

$opts = array(
    'roots'  => array(
         array(
            'driver' => 'LocalFileSystem',
            'path'   => '/path/to/files/',
            'URL'    => 'http://localhost/to/files/',
            'plugin' => array(
                /* optional, this volume values are */
                'Watermark' => array(
                    'enable'         => true,       // For control by volume driver
                    'source'         => 'logo.png', // Path to Water mark image
                    'marginRight'    => 5,          // Margin right pixel
                    'marginBottom'   => 5,          // Margin bottom pixel
                    'quality'        => 90,         // JPEG image save quality
                    'transparency'   => 90, // Water mark image transparency
                                            // ( other than PNG )
                    'targetType'     => IMG_GIF|IMG_JPG|IMG_PNG|IMG_WBMP,
                                        // Target image formats ( bit-field )
                    'targetMinPixel' => 200         // Target image minimum
                                                    // pixel size
                ),
            ),
    ),
    'bind'   => array(
        /* regist action, require */
        'upload.presave' => 'Plugin.Watermark.onUpLoadPreSave',
    ),
    'plugin' => array(
        /* optional, All volume's default values are */
        'Watermark' => array(
            'enable'         => true,       // For control by volume driver
            'source'         => 'logo.png', // Path to Water mark image
            'marginRight'    => 5,          // Margin right pixel
            'marginBottom'   => 5,          // Margin bottom pixel
            'quality'        => 90,         // JPEG image save quality
            'transparency'   => 90, // Water mark image transparency
                                    // ( other than PNG )
            'targetType'     => IMG_GIF|IMG_JPG|IMG_PNG|IMG_WBMP,
                                // Target image formats ( bit-field )
            'targetMinPixel' => 200         // Target image minimum
                                            // pixel size
        ),
    ),
);
$connector = new elFinderConnector(new xelFinder($opts), true);
$connector->run();
[plugin:Watermark] fix volume driver options plugin-Watermark-source
[connector] Option `bind` value accept Array & optimize
[plugin:Watermark] support class "Imagick"
[plugin:AutoResize] add new plugin "AutoResize"

# Connector configuration options

```php
$opts = array(
	'roots'	 => array(
		 array(
			'driver' => 'LocalFileSystem',
			'path'	 => '/path/to/files/',
			'URL'	 => 'http://localhost/to/files/',
			'plugin' => array(
				/* optional, this volume values are */
				'AutoResize' => array(
					'enable'		 => true,		// For control by volume driver
					'maxWidth'		 => 1024,		// Path to Water mark image
					'maxHeight'		 => 1024,		// Margin right pixel
					'quality'		 => 95,			// JPEG image save quality
					'targetType'	 => IMG_GIF|IMG_JPG|IMG_PNG|IMG_WBMP
											   // Target image formats ( bit-field )
				),
			),
	),
	'bind'	 => array(
		/* regist action, require */
		'upload.presave' => array(
			'Plugin.AutoResize.onUpLoadPreSave'
		),
	),
	'plugin' => array(
		/* optional, All volume's default values are */
		'AutoResize' => array(
			'enable'		 => true,		// For control by volume driver
			'maxWidth'		 => 1024,		// Path to Water mark image
			'maxHeight'		 => 1024,		// Margin right pixel
			'quality'		 => 95,			// JPEG image save quality
			'targetType'	 => IMG_GIF|IMG_JPG|IMG_PNG|IMG_WBMP
									   // Target image formats ( bit-field )
		),
	),
);
$connector = new elFinderConnector(new xelFinder($opts), true);
$connector->run();
```

# Connector configuration options(enable AutoResize & Watermark with default)

```php
$opts = array(
	'roots'	 => array(
		 array(
			'driver' => 'LocalFileSystem',
			'path'	 => '/path/to/files/',
			'URL'	 => 'http://localhost/to/files/',
	),
	'bind'	 => array(
		/* regist action, require */
		'upload.presave' => array(
			'Plugin.AutoResize.onUpLoadPreSave', // Do 1st
			'Plugin.Watermark.onUpLoadPreSave'   // Do 2nd
		),
	),
);
$connector = new elFinderConnector(new xelFinder($opts), true);
$connector->run();
```
[connector] add hook point `*.pre`(cmd preprocessing) for bind

call bind callback function with ($cmd, &$args, $this, $volume)
on preprocessing exec any command.

ex.
```php
$opts = array(
	'bind' => array(
		'*.pre' => 'preprocessing'
	),
	'roots' => array(...)
);
function preprocessing($cmd, &$args, $this, $volume) {
	// You can change value of `$args`
	// Then, `cmd` is performed using changed $args.
}