Cron.Ng The Crongular scheduler

**Feature:**
This will create the cron.ng cron scheduler.

**Ticket:**
https://app.asana.com/0/22491639454642/22670128190663

**Review Checklist:**
- [x] All major functionality integration docs need to be bubbled up to an appropriate major module
- [x] All new classes have class level comments (just above the class itself)
- [x] All new modules with code in them have module level comments (just above the module)
- [x] All new public methods have at least the parameters documented and the return, when needed also a quick description

**Task List:**
- [x] CI Passing
- [ ] Release note created and linked in asana ticket

**Only Then:**
- [ ] Merge PR
- [ ] Move ticket in Asana
I do. It's scoped by name not object or at least it's object ID. Any dev not careful enough with their job names could accidentally create a job with the same name as the existing ones. That would be inconvenient if not caught early.

It's fine since you mentioned it's supposed allow the public to subscribe to the job event by just the job's name. If that's the driving design for this then I'm cool with it. Adding a unique job name validation on job creation will safeguard us from dealing with hard to debug problem of subscribers receiving unexpected events later.

The other route would be not to broadcast but attach callbacks to the job object itself. That scopes it to the specific job object regardless of names matching. Job object 1 (name: "job X") will not share event subscribers with job object 2 (name: "job X"). The limitation however is that one needs a handle or a way to get the job object to add event callbacks. Which I think is already supported since there's a `CronScheduler.findJob(name)`.