refactor(payload): clean up payload type-detection
Merge pull request #312 from bcwaldon/type-detection

Clean up payload type-detection
fix(payload): Use FleetXConflicts constant
refactor(job): Drop unused state param from NewJob
Merge pull request #314 from bcwaldon/simplify-NewJob

refactor(job): Drop unused state param from NewJob
Merge pull request #313 from bcwaldon/option-constants

fix(payload): Use FleetXConflicts constant
refactor(job): Drop cli-provided job requirements

This feature is being reimplemented in the unit, so we can go ahead and
drop support for it.
Merge pull request #315 from bcwaldon/drop-job-requirements

Drop cli-provided job requirements
refactor(job): Change type of Job.Payload to value

Clients of the Job model should never have to check if the Job has
a Payload. Remove the possibility for Payload to be nil by
using a JobPayload vs a *JobPayload.
refactor(event): Use BootID event/listener context

Wrapping the bootID in a MachineState was overkill and it opened
the door to clients of the event code trusting clearly untrue
information. This is rectified by simply not wrapping the bootID
with a fake MachineState.
Merge pull request #319 from bcwaldon/refactor

Payload & Event Refactoring
refactor(state): Rename JobState to PayloadState
refactor(job): Rename Job.State to Job.PayloadState
refactor(registry): Use alternate model for Job marshalling
refactor(state): Rely on Job for PayloadState

PayloadState belongs to a Job, so without a Job a PayloadState object
is useless. Rather than allow clients of the Registry to ask for
PayloadState specifically, force them to get it through GetJob.
Merge pull request #321 from bcwaldon/payload-state

Refactor JobState into PayloadState, owned by a Job
refactor(payload): Interact with Jobs, not Payloads

Payloads are not separate entities, they belong to Jobs. Calling code
should not have to explicitly create payloads in the registry.

This breaks the `fleetctl submit` behavior, as creation of the Job
earlier in the workflow is triggering it to get scheduled and
automatically started. This will only be broken temporarily.
Merge pull request #322 from bcwaldon/job-encapsulates-payload

refactor(payload): Interact with Jobs, not Payloads
refactor(job): drop job-updating

Remove the hack that allowed a job to be restarted on
the scheduled Agent. This will be replaced by a proper
state machine.
refactor(fleetctl): move to new simpler CLI framework, part 1

- Remove all codegangsta/cli usage from fleetctl
- Create simple Command struct
- All commands return exit code and os.Exit is only called by main() (#275)
- Dramatically simplify flag usage by accessing flag variables directly
- Implement top level "help" + "version" commands
- Simplify glog usage by using its built-in global options
- Fix small output formatting issues in some commands
- Delay SSH tunnel establishment (#309)
- Fix SSH panic (#317)