Add in integration tests that verify you can submit small and large jobs.

This is the first integration test that verifies that threaded workers
can accept and return jobs whose data size is non trivial.
We can move any job to the finished state unless it is in the failed state.
Worker's MessageRouter is now conservative on when it expects to hb again.

Instead of stating a worker will heartbeat with expected regularity, we now
state the next hb will come in as late as possible. The reason for this
is that if we are sending or receiving a massive message ( 5MB+ ) we stall
the hb thread and cause the server to think we are expired.
Increase the message size on large submit job tests.

This now allows us to verify that large mesh(s) can be properly transmitted
through the remus system without causing false positive issues.
SubmitJobs tests now reduce generated binary data memory footprint

We want to reduce the time to run the SubmitJobs integration tests, so we cache
the single binary blob to send to the workers. At the same time we keep the
amount of memory the client uses as low as possible to reduce the chance of
OOM issue on travis testing machines.
SocketMonitor needs to be expect workers to be slow to heartbeat.

When workers are receiving from socket a large job submissions it stalls the
ability for the worker to respond. This than causes a very active client
to detect that a job has been expired, even though it is a false positive caused
by a worker receiving a large message.
The server now considers sending jobs to workers to be a refresh of the worker
Merge pull request #162 from robertmaynard/verify_able_to_submit_small_jobs

Verify able to submit small & large jobs