Refactor code to resolve jobs in WAIT_ASYNC into JQManagedJob. Add tests...

....
it does follow that one should use that path. however i wonder if it should be reified as as a promise, which is a more broadly understood paradigm? the other branch where i bit off the shared-nothing stuff, I found myself down a path of creating a SerializablePromise to do all of this. So I wonder if we just leave it like this for now (not like 100 people are gonna start consuming it tomorrow) and think about it further? Maybe eventually we just allow attaching of a promise to a job as a first-class behavior?