- change behavior of PreforkingServer to use a non-blocking socket;
  this is supposed to avoid burning cpu time while waiting for a client
- catch exceptions from a thread's run() method in order to avoid
  missing the exit() call after run().

  Imagine the following program, where the thread throws an exception.

    $t= new Thread(...);
    $t->start();
    Console::writeLine('Started');
    $t->join();

  We would expect the "Started" message being executed only in the parent.
  If we wrap the $t->start(); call in a try/catch, then all of a sudden
  the "Started" message (and all of the following code) will be executed
  also in the child process.