Use EventHandler<T> instead of custom delegate

Just better practice in general, allows more flexible use of event
handlers especially when used with external libraries.