[RFC] use sigterm instead of sigkill to kill the server

sys.exit() causes a hang for some reason but
os._exit() does not

I'd rather know why sys.exit() hangs and has to be sigkilled of course. I didn't try very hard to find out but I thought others might have a clue. Hence, RFC.
@gubatron: I disagree with your opinion to have a catch-all exception handler here. Some exceptions may not even be related to networking at all (e.g. might be out of memory, or a bug in a function that is being called by upnp) and we want to fail loudly for these. I think we should list all possible exceptions that we know of, let users report anything that they find here, and augment it as needed.

If you insist on having a general catch-all, at least we should log this loudly to production.log in a way that we will be able to find it when users report bugs and post their logs to us.