3.0 Add Controller::initialize

Add a Controller::initialize() hook. This method is called by CakePHP at a similar timing to Table::initialize() and is intended to replace `$components` and `$helpers` in the long term. In this new method, developers can use the existing `addComponent()` method to add components. I've removed some redundant tests and made the controller's event manager an injectable dependency as well.

This set of changes addresses #4422 and #4551.

### Questions:

* There isn't an `addHelper()` method. Should there be one?
I think `constructClasses()` should happen after `initialize()` I can totally see people trying to modify the components arrays from initialize and expecting the changes to be taken into consideration.