Server::FindWorkerForQueuedJob now faster when we have no jobs.
Cleanup the tests to use common worker and factory helpers.
TerminateMultipleRunningWorkers now uses a threaded WorkerFactory.

To properly testing of terminating workers, we need an active worker factory.
So I have implemented a thread pool worker factory to make sure that everything
works when we have workers joining / leaving the server when we call terminate.
The server now is better at tell the worker factory it is shutting down.

In theory it is possible when shutting down to make the factory generate
workers that will never be given a job, so now when shutting down we make
sure the factory is notified.
Add SubmitJobsUsingFactory to verify a thread pool factory works with remus.
Cleanup the indentation in MessageRouter.
remus::Worker now blocks while sending results back to the server.

When sending information back to the server, it was possible to delete the
worker before the results had left the workers zmq inbox. This caused the result
message to never reach the server, making the server think the job was still
ongoing.

The criteria for this to happen was that both the server had to be under heavy
load, and the job results be of very large size so that transmission wasn't
instantaneous.

The solution was to add result tracking to the MessageRouter, and require
the server to send a response to the worker when it has received the job result.
Add tests to verify that the new worker result logic is correct.
Correct the logic when determining if a job is finished.

Previously we didn't remove completed jobs so we multi counted completed
jobs.
Merge pull request #198 from robertmaynard/properly_dispatch_worker_under_heavy_load

Properly dispatch worker under heavy load