Added a timeout when shutting down the worker pool

This adds system timer to timeout the worker pool when it is
shutting down. If a worker is stuck in a neverending loop then
the server can never gracefully shutdown. This forces a
configurable timeout on waiting for workers to finish. If the
workers don't finish, then the server will stop waiting and
continue shutting down. This will most likely cause the threads
to be terminated in the middle of their serving a connection.

Closes #5