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(fleetctl): move to new simpler CLI framework

- 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)