Fix linking issues in testing, goes with refactor of serverconnection.

Change-Id: I17edd129f48de4364bfc707fa87c1d82172dc86d
Clean up minor typos in the client code.

Change-Id: I0a327ea13fa599e789d004c2ca6f9b990169c32b
Refactor the JobRequirements comparison operators to be easier to read.

Change-Id: I94a98dc57b5a5d9bf7206d5d86ee283c84a2298d
Make JobRequirementsSet be usable anywhere std::set is used.

Change-Id: Ia6ae4381a6a2d0e8039d8aea4324517c14c6fd04
Refactor JobSubmission to be easier to read and use.

Change-Id: Ie263e85846e1f6483debba493bd8044a666c2e3f
Update the server detail classes to understand job requirements.

This required a fairly exetensive change to all the detail classes. At the
same time I went ahead and gave each of them implementation files to improve
compilation performance.

The detail classes aren't exported on purpose as calling libraries/executables
should never see these internal details.

Change-Id: Ib994d153408b337f8e96544bab94627a20b6f787
Update the WorkerFactory to support job requirements.

Change-Id: I6d6818a697e02258c25f9de4177833ea1cddbdec
Finally teach server about job requirements.

Change-Id: I4bdfd005d3ebe69b2e15f931dbba6710aaffeb3d
Fix some issues in MessageRouter when getting a terminate worker message.

Also cleared up in the documentation what the validity of a MessageRouter is
when it receives a terminate worker message.

Change-Id: I53fa0a001d172dbe42881c2e5ef6ec7dbe618ab7
Cleanup JobQueue which has unneeded implementation details.

Change-Id: Id280505f0ac4c40ec086a00fa4253ead3c86f62b
Refactor worker::Job to understand proto::JobSubmission

Change-Id: I232a29f2e6957a89f8f8eee017f49209f6564d66
Correct a spelling mistake in worker.

Change-Id: Iad7b2015bf523253e243d1e436e6c63e78fd0c5b
Add tests for Workers detail classes.

Change-Id: I8dc21855e5e3ded3ce13d8175c0d1506c26d8b88