AS-285 Jobs finished only after updating state

otter was shutting down before updating state on job completion. Fixed this by adding to job deferred to `supervisor.deferred_pool` only after state updation callbacks have been added.  

I am sorry this change has massive test changes since most the tests use `FakeSupervisor` instead of mocked `Supervisor`. This is because mocked one would not allow access to `deferred_pool` public property since it implements `ISupervisorService` which probably shows flaws in the design. Either it should not be an interface or provide APIs to add to the pool. Not sure about the right approach. 
Ok sounds good :)