Allow graceful shutdown of Porter workers

Workers now have a "graceful" method which, when called, will cause them to shutdown in a graceful fashion, first by refusing to take any new jobs from the queue and then only exiting when the last of the its current jobs has finished execution.