Fix broken tests (broken everything)

Moving the EventHub initialization to App.run() was a bad idea. Loops
expect to have a reference to the EventHub before run() is called. They
were getting None instead and that was breaking things.

So now there's a method on the EventHub called init_io_subsystem. It
gets called after any forking is done and before accept is called on the
shared listening socket(s).