Abstract event manager

sharing event manager API
I'll stop commenting after here on the ptrs.  In general, I'm not a huge fan of unmanaged ptrs.