Add tests to verify that inproc and tcp/ip works with multiple workers.

We now verify that a server can have workers or clients connected using tcp/ip.
We also now verify that the client and worker connection type don't have to be
the same.

This closes Issue #195 as unreproducible.
Merge pull request #199 from robertmaynard/correct_inproc_between_server_and_workers

Add tests to verify that inproc and tcp/ip works with multiple workers.
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
Designate a default tcp/ip port to be used for server pub socket.
First draft at the event publish/subscribe stream.

We still have lots of work to do on this, as I haven't added any really
unique worker events ( connecting, creating, heartbeating )
Add a example to monitor the server pub socket.
Adding more worker messages and still playing with the EventPublisher API.