gracefully shutting down server

fixes #13 

Here we introduce gracefully shutdown behaviour of the server. 
- process listens for `SIGINT`, `SIGTERM`, `SIGKILL`
- when one of the signals was received we delay closing of the TCP listener
- after the short delay we close the TCP listener so no new connections will be accepted
- when the listener was closed we wait for a few seconds again to let established connections finish
- exit the process with code `0`
Yes, that's a good idea. We could also count the open connection and wait until we reach zero (but still have a timeout around).