BUG Ensure that past dates for embargo / expiry are handled elegantly

Tests also consider publish > unpublish and unpublish > publish workflows, with the current point in time either before, after, or in the middle of any specified range.

Instead of using changed status of fields to detect if a job should be created, it acts more pessimistically by checking any existing job, and comparing the scheduled time against desired time.
Yeah, a lot of this is adapted from old code, so there's still a bit of redundancy in there. I'll clean it up tomorrow.