Start implementing Controller::initialize()

Fix tests and update code to implement a new initialize() hook that
works similar to Table::initialize(). Hopefully, with this we can
deprecate the $components and $helpers properties and replace them with
methods.
Remove un-necessary calls to constructClasses().

Now that Controller::__constuct() calls constructClasses() it doesn't
need to be called all over the place.
Set components on the controller in ControllerTestCase.

Because we aren't re-calling constructClasses() anymore, we need to set
the mocked components onto the controller in addition to having set them
in the registry.
Inline constructClasses().

Remove the actual method body for constructClasses() as it is no longer
needed. I've left a no-op method to make life easier for people if they
are following 3.0.*-dev. Removing the method now would cause seemingly
random test failures now. Instead I'd prefer to remove these methods
after we've done a release announcing their removal.
Add deprecated warning for deprecated method.

Fix failing tests.
Add missing property to Controller.

This property was lost in the shuffle but should exist on Controller, as
it is modified by methods like setRequest().
Merge pull request #4602 from cakephp/controller-initialize

3.0 Add Controller::initialize