Address #448: Replace InstallPhaseEvent with ExtendableEvent which both lifecycle events and functional events use and extend