The only missing part is ContainerAwareEventManager::addEventSubscriberService(), because I'm not sure how to find out the class name of a service in the DIC. Also, inline documentation of this code needs to be finished once it is accepted.