Abstract event manager

sharing event manager API
I don't think this is needed any more iirc master is all C++11.