Cleaner shutdown

Provide a shutdown mechanism which waits until IIn-flight reqests are drained.
We still need a mechanism to know when to shutdown. We could setup a timer that says exit() in "ConnectionDrain setting seconds" but this seems better. If there's actually enough CPU overhead that it matters, we can rethink it.