Allow events to fire during unit tests

To write tests for functionality relying on events being dispatched, the global events area needs to be loaded. For unit tests, only the lightweight Mage::app()->init() gets called, which doesn't load the global events area (this is done in run() though).

This is a simple patch, but could have a fairly serious impact on existing tests that rely on the current behaviour where events are not actually dispatched.

I have improved this on the previous pull request by supporting selective disabling of events. All events can be disabled, or just specific events. This permits quite granular control over which events are dispatched during the lifecycle of a testcase.

I have also fixed up a couple controller tests that were failing. Ultimately I will remove / replace these at some point.