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.
Merge pull request #154 from goldmann/master

Changes to the way scheduled jobs are created