Handle thread pool properly under Passenger

When running under Passenger, the thread pool is destroyed every time a new worker is spawned.  This change catches the Passenger fork events and starts/stops the thread pool per worker appropriately.