Schedules

- controller / user API
- adding executor to the listener so events are not dropped
- added a general-purpose distributed lock DAO
When users enroll/unenroll, the lock can be on the user. Other users are not effected by this.