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. 
Hmm.. this slightly increases the complexity of the code but I am not sure if the testability gained is worth the change. I think any other developer has to read the test to realize why this was written this way. Also, even with this change wouldn't the test need to track the deferred returned from `exec_config` when the test wants to pause execution? 
```python
job.start()
# exec_config returns empty deferred
assertIn(job.done, pool)
exec_deferred.callback(None)
assertNoResult(job.done)
modify_state_complete.callback(None)
assertResult(job.done)
assertNotIn(job.done, pool)
```
I am sorry if I am misunderstanding again :(