Add in example of using all three parts of the remus interface in a qt app.

Change-Id: I88ec36d13421bce83b20f0ba3176903e4dbe27f8
Remus worker now efficently waits for jobs.

Instead of busy-waiting for jobs, we efficiently poll
for jobs.
Merge branch 'qt_example'

Change-Id: I6157c5e170cd300127b70e7b3bf4b602b69be906
Merge branch 'async_worker_getJob'

Change-Id: I0825fc41a26cd76607d250e566a812f17fdc0819
Introduce a dynamic poller to remus instead of a fixed polling interval.

Change-Id: If55143046eb7b7453a96c1fcb426f8098a5e4b6e
Properly Export PollingMonitors symbols, but not the header.

PollingMonitor is used by other remus libraries but it is not
a class that is designed to be used by users of remus, so
we don't install the header.
Update the worker to use the new dynamic poller.

Change-Id: I6734e2d89d7bd8115b964ea90aaf8e8204fd058f
Workers now send to the server how soon they expect to heartbeat next.

Rather than have the server presume when a worker will next heartbeat,
we now have the worker sending the worst case scenario of when it will
heartbeat.

Change-Id: Ic73c87095eb2a157eec8fd7bcd4e38564b4cc3b2
Workers are now more efficient about resending the full job requirements.

We only send the full job requirements when we state we can mesh, rather
than at can mesh and make mesh

Change-Id: I552629e1641a1142add9662e7f5090ac3b7c1a69
Introducing the SocketMonitor the advanced way to determine when workers die.

Change-Id: Ia765cb431a32d5572e43eb5f55dc1822c35a6d0e
ActiveJobs now interfaces with SocketMonitor to determine worker health.

Instead of ActiveJobs determine when a worker dies, using a fixed heartbeat
interval, it now queries the SocketMonitor. The SocketMonitor does dynamic
heartbeat interval to support workers that are a sleep.

Change-Id: Ibcbf3de088995ecbb979eda5ed6b7f11e5acbb7e
Remove unneeded tracking of when we dispatched jobs.

We never did anything with this information so lets remove it.

Change-Id: Ice3b607fd07145ab5521261586f457ba7765e4f0
WorkerPool has been upgraded with numerous new features.

WorkerPool now supports workers that want multiple jobs with the same
requirements, by keeping a worker in the pool as long as it wants more jobs.
The WorkerPool now also supports the ability for a worker to desire different
job requirements properly.

Lastly WorkerPool has been updated to interface with SocketMonitor to determine
when workers die. Rather than remove dead workers we flag them invalid and
ignore them in-case they come back.

Change-Id: I7317c333d770af3eab5cc0104ab170e583a80cbd
WorkerPool now dispatches jobs to multiple workers of the same type better.

Before we also gave a job to the first worker that said it could handle
it, which preferred workers that joined first. Now once a worker takes
a job it goes to the back of the line. This will allow us to load balance
jobs better between workers that all want multiple jobs.

Change-Id: I824859c55800d65d09ecc5788c21828c721dd61a
WorkerPool now can give you the SocketId for all workers wanting work.

Change-Id: I717e0b16bd2a668f759b616272021cb6ce4381a4
Update the server detail tests to know about the SocketMonitor.

Change-Id: Ib581120baa340ff4c0e3514d0c2ff13d510ea284
Add a UnitTest for SocketMonitor

Change-Id: I08e26093454254a7e3f7b0bb5bf4d79f8a405512
The server uses lighter locks and unique_lock was not needed.

Change-Id: I011d66938c46404670a082833614252e206fdcfc
Server now has dynamic polling, better heartbeating, and worker pool.

The server now understands the terminate call being sent from a worker,
also now understands the new heartbeat message which states when the
socket should heartbeat next. It has also been updated to use the SocketMonitor
so that it can handle connections that dynamically change the heartbeat
interval.

Change-Id: I4f9dba5c29eabe1613d15b12452c92a753592fe4
fixed polling duration on server and worker to be in milliseconds.

Change-Id: Ia968c85346529ebc7b71d0377d674634c2722a0c