Event hook functions are now always called with keyword arguments

This makes it easier for us to add new arguments to events in the future, with less risk of breaking people's code (as long as they've used a **kw wildcard argument in their event listeners)