Make attach and remove headers more robust.

They now to attach and remove the header multiple times so that
os level interrupts don't ruin a message.
Properly initialize all thread management member variables in constructor.
MessageRouters start method doesn't return until polling actually has started.

Previously the start method would return before the sockets had been connected
as it was based on thread initialization. Now we properly return after
the thread has been started and has properly bound all the sockets.
Update the MessageRouter test to be more robust.

Also the MessageRouter unit test doesn't try to relaunch the router after
it has been stopped, as that is considered an invalid use case ( and is
documented ).
Make the WorkerJobQueue unit test easier to read.
Merge pull request #139 from robertmaynard/message_router_test_failure

Message router test failure