Changes to the way jobs are createdand removed.

Now the runtime scheduling using the .schedule, .at and .remove methods
are executed asynchronously. These methods return CountDownLatch object
so we can block (if needed) to wait for the task completion or save it
for later use.

New methods schedule_sync, at_sync and remove_sync were created to
execute the task in a scynchronous way returning true or false depending
on the outcome.