Ability to exit work loop gracefully

This change adds the ability to call Shutdown on a gearman-go worker which causes the
worker to wait for all currently active jobs to finish and then close the connection.

It does this by keeping tracking of the number of currently active transactions, disallowing
new job creation, and using a WaitGroup to wait for all active jobs to finish.
Is there any reason you can't use the WaitGroup to keep track of active jobs instead of a separate boolean?

I don't know for sure, but I think that you can just call `waitGroup.Add(1)` every time you start a job, `waitGroup.Done()` every time you finish a job, and then `waitGroup.Wait()` when you want to block until all jobs are done.