Reducing the number of calls to queryTranslator
Adding a method to mark a query as dirty, using it to add extra logic
when a query internal state is altered
Update HelperCollection & Helpers for events.

A number of things have changed here:

* Helpers now directly bound to the EventManager.
* View now directly triggers events.
* HelperCollection is a basic factory/registry now.
* Helper uses reflection to determine the implementedEvents. In
  a subsequent commit the base methods will be removed, making fewer
  events bound per helper.

Eventually, this will help increase performance around helpers and help
streamline the events overall.
Remove default implementations for helper callbacks.

Removing the empty methods removes *many* event listeners as most
helpers don't implment these callbacks. Now that callbacks are only
registered/listened to as needed this should greatly reduce the number
of event listeners used in the view layer.
Clean up Event system.

* Remove passParams. This option is now enabled always implicitly. You
  cannot turn it off.
* Update Event class to make data protected and expose data() method.
* Update tests.

This change simplifies the event system a bit and removes additional
mostly useless configuration.
Remove fragile section of code.

This code creates annoying dependencies when testing CacheHelper.
Update failing tests caused by changes in view events.

Update failing view & helper tests. Account for the various API changes
in the Event system and simplify tests by changing which objects are
mocked.
Partially revert changes to Event.

The changes around the data property will have to wait until Components
are also migrated to the new event style.
Remove useless variable.
Coding standards fixups.
Tidy up doc blocks and use proper mocks.
Fix failing tests.

I'm dumb and left off required arguments.
Optimize listener callbacks.

Use direct function calls as they can be up to 30% faster than
call_user_func_array.
Merge branch '2.4' into 3.0

Conflicts:
	lib/Cake/Console/Command/Task/ExtractTask.php
	lib/Cake/Console/ConsoleErrorHandler.php
	lib/Cake/Console/Shell.php
	lib/Cake/Console/ShellDispatcher.php
	lib/Cake/Console/Templates/skel/Config/bootstrap.php
	lib/Cake/Controller/Component/EmailComponent.php
	lib/Cake/Core/App.php
	lib/Cake/Error/ErrorHandler.php
	lib/Cake/Error/exceptions.php
	lib/Cake/Log/CakeLog.php
	lib/Cake/Log/LogEngineCollection.php
	lib/Cake/Model/Datasource/Database/Mysql.php
	lib/Cake/Model/Datasource/Database/Postgres.php
	lib/Cake/Model/Datasource/Database/Sqlite.php
	lib/Cake/Model/Datasource/Database/Sqlserver.php
	lib/Cake/Model/Datasource/DboSource.php
	lib/Cake/Model/Validator/ValidationRule.php
	lib/Cake/Model/Validator/ValidationSet.php
	lib/Cake/Network/Email/Email.php
	lib/Cake/Network/Request.php
	lib/Cake/Network/Socket.php
	lib/Cake/Routing/Router.php
	lib/Cake/Test/Case/Core/AppTest.php
	lib/Cake/Test/Case/Log/CakeLogTest.php
	lib/Cake/Test/Case/Log/Engine/ConsoleLogTest.php
	lib/Cake/Test/Case/Model/Datasource/Database/MysqlTest.php
	lib/Cake/Test/Case/Model/Datasource/Database/PostgresTest.php
	lib/Cake/Test/Case/Model/Datasource/DboSourceTest.php
	lib/Cake/Test/TestApp/tmp/dir_map
	lib/Cake/Test/TestCase/Console/Command/Task/ExtractTaskTest.php
	lib/Cake/Test/TestCase/Console/ShellTest.php
	lib/Cake/Test/TestCase/Network/Email/EmailTest.php
	lib/Cake/Test/TestCase/Network/RequestTest.php
	lib/Cake/Test/TestCase/Routing/RouterTest.php
	lib/Cake/Test/test_app/View/Pages/home.ctp
	lib/Cake/TestSuite/TestSuiteCommand.php
	lib/Cake/Utility/Inflector.php
	lib/Cake/Utility/Validation.php
	lib/Cake/VERSION.txt
	lib/Cake/View/Helper.php
	lib/Cake/View/Helper/JqueryEngineHelper.php
	lib/Cake/View/Helper/JsBaseEngineHelper.php
	lib/Cake/View/Helper/MootoolsEngineHelper.php
	lib/Cake/View/Helper/PrototypeEngineHelper.php
	lib/Cake/View/ScaffoldView.php
Fix merge: value in first argument and disable caching

Ref: 542d594b
Fix failing test in Router

Update plainstring tests to account for various types of relative links
that don't resolve to routes. Those include urls with leading //, ://,
?, and #.
Update tests for changed 3.0 directory names.

In 3.0 `app` was renamed to `App`. This needed to be updated in the
tests as path segments are case sensitive.
Merge pull request #1397 from markstory/3.0-helper-events

3.0 - Event simplification and Helper event migration
Correct namespace used when generating test cases.

Fixes #3912
Merge branch '2.4' into 3.0

Conflicts:
	app/webroot/index.php
	lib/Cake/Console/Command/Task/ExtractTask.php
	lib/Cake/Core/App.php
	lib/Cake/Network/Email/Email.php
	lib/Cake/Test/Case/Core/ObjectTest.php
	lib/Cake/Test/Case/Model/CakeSchemaTest.php
	lib/Cake/Test/Fixture/ArticleFixture.php
	lib/Cake/Test/Fixture/ArticlesTagFixture.php
	lib/Cake/Test/Fixture/AuthorFixture.php
	lib/Cake/Test/Fixture/CakeSessionFixture.php
	lib/Cake/Test/Fixture/PostFixture.php
	lib/Cake/Test/Fixture/TagFixture.php
	lib/Cake/Test/TestCase/Network/ResponseTest.php
	lib/Cake/Test/TestCase/TestSuite/ControllerTestCaseTest.php