Return an EntryID when adding a job and allow it to be removed.
SpecSchedule.Next: use time.Truncate instead of time.Date

Add tests to verify nightly jobs work as expected.
This fixes an infinite loop when clock falls back for DST