Currently, a job always starts with ```Status.QUEUED``` even if it depends on some unfinished job and does not actually get added to a queue. I changed ```enqueue_call()``` to use  ```None``` in that case, but it's not necessary for correctness of the dependency logic.

I think there's a bigger problem here related to what you're talking about. A user could call ```Job.create()``` with dependencies, followed by ```Queue.enqueue_job()``` without calling ```Job.register_prerequisites()```, resulting in an inconsistent state. This holds even without this pull request.

Thus, user error can lead to inconsistent state. How much of the lower-level (e.g. ```Job.create```) API should be public?