Allow having no shutdown timeout

This updates the worker pool to allow not having a timeout when
shutting down. This allows an application using the worker pool
to choose to let it's workers finish even if they are long-running
jobs.