Maintain a count of in flight jobs

We can eventually use this to set up a signal handler in main() that
will allow us to gracefully shut down.
Add Shutdown method for server

This will block until all pending combination jobs finish.

Also make the server object a package variable so the signal
handler can call the new Shutdown() method on it.
Don't shutdown until all jobs are done

This uses the WaitGroup to intercept SIGINT and SIGTERM (e.g. when the
system is shutting down) and gracefully finish all work before exiting.