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. 
Just to be clear, I'm not set on making this change.  :)  It's fine as is.

I was curious though about how it increases the complexity of the code?

And for the tests, we could separate out the tests into one that tests that the job is added to the deferred pool when it starts:

    assertNotIn(job.done, pool)
    <assert nothing is called>
    job.start()
    <assert callback chain starts>
    assertIn(job.done, pool)

And in a separate test or series of tests, test the dependency of `job.done` on  `exec_deferred`/`modify_state` is finished?  It possibly separates out the assertions so that each test sort of tests a single assumption/thing.