clean up the install name to be lib instead of libs.
Merge branch 'better_install_lib_name'
Update the code to support zmq 2 and 3.

zmq 3 move zmq.hpp into its own project. So we provide a copy of the
bindings ourselves instead of asking people to get another external
project. We also extended the c++ bindings to handle interfacing with
zmq 2 and zmq 3.

Lastly the polling interval has changed in zmq 3, moving from
microseconds to milliseconds which requires some wrapping int the bindings.
The poll command now expects milliseconds, and will properly convert
that to microseconds when dealing with zmq2.
zmq 3 changed getsockopt which causes silent runtime bugs.

We add to zmq.hpp more_t which will be the correct size depending
on the version of zmq, so that we never encounter the problem with
zmq 2 expecting int64 and zmq wanting int.
Merge branch 'zmq3_support'
BasicWorker Example was using an invalid input job type.
Merge branch 'example_worker_fix_in_job_type'
SignalCatcher is a new class that allows classes to catch C signals.

To properly handle abnormal termination of servers/clients/etc we need
a nice way to hook into C signals and relay them to classes that contain
the information required to cleanup everything.

In this case we are going to extend remus::server::Server to inherit
from SignalCatcher to make sure we can properly kill any zombie workers.
Rename SHUTDOWN command too TERMINATE_JOB_AND_WORKER.

We need a better name for the job, as in the future I want to add
finer grain control on stopping jobs, but leaving the worker alive.
Server is now able to kill all attached workers when it crashes.

We now properly tell all workers attached to the server that
they should kill themselves when we have an abnormal termination
of the server.
Merge branch 'fixes_zombie_factory_workers'