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.
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 pull request #1397 from markstory/3.0-helper-events

3.0 - Event simplification and Helper event migration