* (fail) spyX in tests: only wrapping a RangeError in a new Error, otherwise simply re-throwing it - prevents over and over nested messages
* (fail) spyX/test: re-introduced callChain to exc msg, but now that is repeated over and over...
* (fail) test/spyX: do not repeat callChain in exc msg
* (still fail): j.then(..): fix wrongly scoped oldNext; now we get the "not-implemented" error as expected
* (pass) j.then(..): let's just make next a recursive structure - a job itself!
* (pass) refactor: since next is a job itself it returns itself from .then(..). Hence we can simplify this "if"
+ (fail) test: again, require one level deeper
* (pass) fix test: again we have to assume one more function in the chain to be cooperative
* (fail) modify tests: instead of assuming ever one more function to be cooperative from case to case - we simply assume *all* of them to be coop.
  Interestingly this mod reveals an earlier bug in our tests. Can you spot it? (hint: "job .create(f) (h), h a function, calls f with h")
* (still fail) fix test: copy&paste is your friend - NOT!
* (less failures) assuming g to be cooperative also obliges us to give it actually a thing that it can call. Fixed only in one of two places because the remaining failure again reveals a (minor) flaw in the test...
* (still fail): fix test name
* (different failure) if we have a g, then we will *always* call it with 'noop'. Now we get a different failure...
* (pass) changed test: we need not assert on the exact argument, only that g is called eventually
+ (pass) tests: we assume all function to be coop, hence we must give them all a function arg, hence we must test for this..
* (pass) refactor tests: extracted spy assertions into variadic function assert.eachCalledOnceInOrderWithFnArg(..)
+/* (pass) rearrange tests, add tests for job.create(..). ... () variants
* (pass) refactor tests: put test function creation and job creation into (nested) setUp methods