Merge pull request #1295 from cakephp/master-i18n-fixes

Master i18n fixes
Merge pull request #1294 from ADmad/2.3-bugfix-smtp

Ensure passing empty array to SmtpTransport::config() does not reset exi...
Fix docblock
Expand doc blocks.
Make CakeEmail::config() merge configuration.

This allows you to incremementally overwrite configuration and better
matches other config methods in CakePHP.

Fixes #3848
enforce a better email wrapping to send valid emails
Fix: Incorrect model being used as Controller::$modelClass

We cannot be sure that Controller::$uses have not been iterated, so
reset the array to use the first value.
Throw exceptions when invalid permission keys are used.

Silently 'failing' to save permissions is bad, throw exceptions instead.

Fixes #3851
Fix for ExtractTask does not check output directory (ticket 3852)
Output to stderr, not stdout
Merge pull request #1301 from tersmitten/extracttask-output-directory-bugfix

Fix for ExtractTask does not check output directory

Fixes #3852
Merge branch 'master' into 2.4
Added password hasher
Merge pull request #1275 from ADmad/2.4-auth-hashtype

Added password hasher
Remove unnecessary overriding of '_findUser()' in 'DigestAuthenticate'.
Deprecated AuthComponent::password()
Only try to use CakeErrorController if AppController exists.

This fixes missing error pages when there are parse errors in
AppController.

Fixes #3850
Fix issues with getting Xml as SimpleXmlElement and invalid Xml.

Fixes #3855
do not translate error message in test case
This fixes an issue where attempting to use "!=" in a condition with an array with only a single element generates invalid SQL.

Example:
$condition['Model.id !='] = array(1, 2); //Generates Model.id NOT IN (1, 2) as expected
$condition['Model.id !='] = array(1); //Generates Model.id != = (1) which is invalid SQL

Patch will cause the above to generate Model.id != (1);

This an implimentation of @markstory's suggestion on PR 1232