Decouple generating controller events from sending them to controllers
In my analysis of Tor's callgraph , I found that a lot of our callgraph's complexity comes from the fact that all the code that generates a controller event can try to call into the network stack. And since controller events can come from nearly anywhere in the code, that's quite a problem for modularity.
So, let's try to make the "blob" smaller by decoupling the logic here.