feat(job offer): restrict job offers to a subset of the machines

Adds ability when creating the job offer to specify a list of machines that should
consider the offer. Machines that are not in the list will ignore the offer.
feat(job offer): restrict job offers to a subset of the machines

addresses code review feedback
feat(job offer): restrict job offers to a subset of the machines

Added feedback from bcwaldon
Merge remote-tracking branch 'upstream/master' into offer-partitioning
feat(job offer): restrict job offers to a subset of the machines

Engine keeps a picture of what's going on in the cluster.
So far it counts how many jobs each machine has.
Job offers are given to machines with low job count.
This is not a particular smart strategy, but it allowed me to put in place
the plumbing for more intelligence later.
feat(job offer): restrict job offers to a subset of the machines

Actually remember cluster refresh.
feat(job offer): restrict job offers to a subset of the machines

Propagate force flag down.
feat(job offer): restrict job offers to a subset of the machines

Removed useless type.
oops(uwe): Committed a binary

Sorry
feat(job offer): restrict job offers to a subset of the machines

Added unit tests and fixed bugs accordingly.
Merge remote-tracking branch 'upstream/master' into offer-partitioning
feat(job offer): restrict job offers to a subset of the machines

registry.GetJobTarget returns nil if it encounters error. Protecting for that.
Merge pull request #207 from uwedeportivo/offer-partitioning

feat(job offer): restrict job offers to a subset of the machines