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.
fix(Documentation): remove outdated note about the registry + etcd

This note was probably from when fleet was using very very tight ttls,
tons of watchers and pushing lots of data through etcd. Lets remove
this.
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 #217 from philips/remove-registry-note

fix(Documentation): remove outdated note about the registry + etcd
feat(third_party/codegangsta/cli): Add BoolTFlag type

Compared to BoolFlag type, BoolTFlag treats 'true' as the default value
for the flag.

Without it, we have to use --no-action flag if we set the action is done
in default. But sometimes it is bad to maintain flags with negative meanings.
And it will be painful if we change the default value for the flag.

As this implementation, it keeps all existing functionality. So it
is compatible with old versions.
Merge pull request #219 from unihorn/41

feat(third_party/codegangsta/cli): Add BoolTFlag type
feat(ssh): known hosts checking
refactor(build): Move builddir from ./ to ./gopath/
refactor(gitignore): Drop unused gitignore line
feat(fleetctl): add debug_info subcommand