tokio-cron-scheduler 0.9.1

Schedule tasks on tokio using cron-like annotation, at an instant or repeat them at a fixed duration. Tasks can optionally be persisted using PostgreSQL or Nats.
Documentation
# Migration

## 0.4, 0.5 ➡ 0.6

Architecturally 0.6 is much different from the previous versions. If you didn't implement your own scheduler, this version's only big change is the adding a reference of the scheduler when creating/removing notifications of a job.

### Removals

#### JobScheduler::new_with_scheduler()
The JobSchedulerWithoutSync trait has been removed. The new_with_scheduler method accordingly also. Replaced with new_with_storage_and_code().

#### JobStore
JobStore trait has been removed. Replaced by MetadataStore and NotificationStore traits.

#### JobSchedulerWithoutSync
No longer used.

#### SimpleJobScheduler
JobSchedulerWithoutSync trait deletion and default implementation SimpleJobScheduler removed.

#### SimpleJobStore
Removed as JobStore trait has been removed.

### API changes
#### Add &scheduler to notification add / removal

The first parameter to all of these functions on the JobLocked type needs to pass a reference to the scheduler as a first parameter.

Affected methods:

 Affected |                                                                        |
----------------------------------------- | -------------------------------------- |
JobLocked::on_notifications_add           |                                        |
JobLocked::on_start_notification_add      | JobLocked::on_done_notification_add    |
JobLocked::on_removed_notification_add    | JobLocked::on_stop_notification_add    |
JobLocked::on_notification_removal        |                                        |
JobLocked::on_start_notification_remove   | JobLocked::on_done_notification_remove |
JobLocked::on_removed_notification_remove | JobLocked::on_stop_notification_remove |



### Additions
#### JobScheduler::new_with_storage_and_code()
Custom job metadata, job notification, job code and notification providers with the scheduler.

#### MetaDataStore
Trait needed by the scheduler to schedule jobs.

#### NotificationStore
Trait needed by the scheduler to run notifications on job start/scheduled/stop/removals.

#### ToCode
Generic trait that provides a PinnedGetFuture for a UUID. 

#### JobCode
Trait that provides the runnable closures for the scheduler. Specific type of ToCode. Default implementation SimpleJobCode.

#### NotificationCode
Trait that provides the runnable notification closures for the scheduler. Specific type of ToCode. Default implementation SimpleNotificationCode.

#### SimpleMetadataStore
Default implementation for the MetadataStore.

#### SimpleNotificationStore
Default implementation for the NotificationStore.

#### PostgresMetadataStore
Postgres implementation of the MetadataStore. Needs postgres_storage feature.

#### PostgresNotificationStore
Postgres implementation of the NotificationStore. Needs postgres_storage feature.

#### NatsMetadataStore
Nats implementation of the MetadataStore. Needs nats_storage feature.

#### NatsNotificationStore
Nats implementation of the NotificationStore. Needs nats_storage feature.