refactor(agent): Move logic from HandleEventJobOffered to MaybeBid
refactor(agent): Move logic from HandleEventJobScheduled to JobScheduled
refactor(agent): Move StopJob locking into Agent
feat(fleetctl): add version check to fleetctl

This adds a basic version check/gate to fleetctl wherein it will print a
scary warning to the user if the version of fleetctl appears to be older
than the version of fleet running in the cluster. The version of fleet
in the cluster is inferred from the latest version found in all
machinestates registered in the registry.
Merge pull request #428 from jonboulle/428

Implement version gate in fleetctl
refactor(agent): Move logic from HandleEventJobUnscheduled to JobUnscheduled
refactor(agent): unexport Agent.UnloadJob
refactor(agent): Drop Agent.Machine()
refactor(agent): unexport Agent.LoadJob
refactor(agent): unexport Agent.Bid
refactor(agent): Split JobScheduled into JobScheduledElsewhere/Locally
refactor(agent): unexport Agent.BidForPossibleJobs
refactor(agent): unexport Agent.FetchJob
fix(agent): Drop unnecessary call to VerifyJob
refactor(agent): unexport Agent.VerifyJob
refactor(agent): unexport Agent.BidForPossiblePeers
refactor(agent): unexport Agent.AbleToRun
refactor(agent): Acquire AgentState lock during Initialize
refactor(agent): Acquire AgentState lock during Purge
Merge pull request #469 from bcwaldon/agent-logic

Refactor Agent/EventHandler relationship