Use smart pointers across the Event system

Signed-off-by: MHesham <mhesham.fcis@gmail.com>