Add in a triangle worker to remus.

Change-Id: I5dcc9212194e4b49c1089be9d57aed082795958f
Merge branch 'triangle_worker'

Change-Id: I66f4c02fc6c08a91ce27b557f3d2da375ec08a32
Upgrade our zmq.hpp wrapper to support zmq4.

Change-Id: Ic918476c9f0d79aa0037bbb481208c0f92c7c116
Merge branch 'support_zmq4'

Change-Id: If5f24a749045d6e2f87c08e687faa0d7ec8229b2
Update to version 0.2.1 since we are going to change wire proto.

Change-Id: I62759496fe2076067d290356db2d7165e36ff01f
No need for the combined type to be signed, we never have negative values.

Change-Id: I6c036749d9e32ab196be806fa044173252f8a9cb
Remove unneeded boost and zmq includes.

Change-Id: Id027ee6315f88b93447e1349dc02b5eee9aed8e7
Install these headers.

Change-Id: Ibb9d0a231284098371cc90c5fcf7ccd5ffdb3a59
Refactor the Job classes to be in client and worker directory.

Rather than each of the Job classes have methods that worked only
on the client or worker, we move them to being unique classes that
reside in the respective folder/namespace.

This allows us to easily extend each side of the api, and allows
a more targeted approach to make the client and worker api.

Also this should allow us in the future to create a better wire protocol
format.

Change-Id: I2ce21b8fa9b1ad4f0f1c8fc7191cf25ec6fa49dc
Update server internals to use the refactored Job* classes

Change-Id: Ic5a8ed3a7dea412d0a6959edccae1ebc79c11344
Update the Server class to handle the new Job refactoring.

Change-Id: I2b3d3be836b5d0b216726284b9418425db616632
Update all the examples to use the new refactoring.

Change-Id: Ia0a5eb1a75641e5143e477af9ea89e18eb8a8922
Split client::JobRequest into Data and File classes

This is the start of making remus able to efficiently send file based
jobs to workers.

Change-Id: Ie37648e7e3f87ab227354710bd8e016f216269be
Add notes on what the next design choices are.

Change-Id: Ic9bdf8f375f1b78da8b6c60c8f1c164ee3c200a3
Make derived servers able to control lifespan of factory generated workers.

Change-Id: Ib40d86de61599d8fde8962e97ad4b16014eb6cfb
We need to send absolute paths for executeprocess to work reliably.

We where sending only absolute paths when the server wasn't in the same
directory as the worker, which caused the factory to fail to properly launch
workers.

Change-Id: I0dbd7451de7e0b2ad714bba65ac9451a510aac3a
Update the basic client to report outstanding jobs and query throughput.

Change-Id: I78bfd4f75c5048925e7a5f1c322e517dfa1532f7