Changes to the way scheduled jobs are created

In general - it's async by default now.

Now the runtime scheduling using the .schedule and .at methods are executed asynchronously by default.
This can be changed by providing the :async option and setting it to
false.

Now the JobSchedulizer returns the CountDownLatch object so we can block
(if needed) to wait for the task completion or save it for later use.