Wait for all threads to shutdown gracefully before terminating.

This commit resolves the following errors that were seen when WorkflowThread.stop() was called.  I saw these errors every time I ran run_site_diff.sh
-------------------------------------------------------------------------------------------------
Traceback (most recent call last):
  File "/usr/lib64/python2.6/threading.py", line 532, in __bootstrap_inner
  File "/home/loedolff/dev/dpxdt/dpxdt/client/workers.py", line 142, in run
  File "/usr/lib64/python2.6/Queue.py", line 65, in task_done
  File "/usr/lib64/python2.6/threading.py", line 291, in notifyAll
<type 'exceptions.TypeError'>: 'NoneType' object is not callable
Exception in thread Thread-5 (most likely raised during interpreter shutdown):
Traceback (most recent call last):
  File "/usr/lib64/python2.6/threading.py", line 532, in __bootstrap_inner
  File "/home/loedolff/dev/dpxdt/dpxdt/client/workers.py", line 127, in run
<type 'exceptions.AttributeError'>: 'NoneType' object has no attribute 'Empty'
Exception in thread Thread-3 (most likely raised during interpreter shutdown):
Traceback (most recent call last):
  File "/usr/lib64/python2.6/threading.py", line 532, in __bootstrap_inner
  File "/home/loedolff/dev/dpxdt/dpxdt/client/workers.py", line 127, in run
<type 'exceptions.AttributeError'>: 'NoneType' object has no attribute 'Empty'
Exception in thread Thread-4 (most likely raised during interpreter shutdown):
Traceback (most recent call last):
  File "/usr/lib64/python2.6/threading.py", line 532, in __bootstrap_inner
  File "/home/loedolff/dev/dpxdt/dpxdt/client/workers.py", line 127, in run
<type 'exceptions.AttributeError'>: 'NoneType' object has no attribute 'Empty'
Exception in thread Thread-6 (most likely raised during interpreter shutdown):
Traceback (most recent call last):
  File "/usr/lib64/python2.6/threading.py", line 532, in __bootstrap_inner