makes shutdown use shrink to keep _size consistent

The current implementation allows a user to call shutdown(), then later call size() and get a nonzero value even though all the workers have terminated.