Replace JobList with QList for safer logic

The next and previous pointers in a Job were used for three distinct
JobLists, across threads, and used unsafely in several places. That
resulted in a job being infinitely repeated, seen as 100% CPU usage from
contactsd's birthday plugin.