supervisor.exec_config refactor - no tests (review)

`supervisor.execute_launch_config` returned `Deferred` that fired back with job id and completion deferred. The job id was used by `_Job`. Now, it only returns completion and job id knowledge moved to `_Job`. This way code is simpler. This is based on discussion in https://github.com/rackerlabs/otter/pull/646#discussion-diff-13937435. Unfortunately, most of the discussion happened offline. 
Definitely!  I did not do a good job of explaining what I was thinking, which is something like:

    def __init__(...):
         ....
         self.job_id = generate_job_id(self.scaling_group.uuid)

         def run_job(...):
              d = self.supervisor.execute_config(
                  self.log, self.transaction_id, self.scaling_group, launch_config)
              d.addCallbacks(self._job_succeeded, self._job_failed)
              return d

         self.done = Deferred().addCallback(run_job)
         ...

    def start(...):
        self.supervisor.deferred_pool.add(self.done)
        self.done.callback('go!')
        ....

Or something like that (this is maybe not in this PR, but I meant this could be what it'd ultimately look like).