Add runAsync(...) methods to allow asynchronous scheduling, add methods that accept Callable (in place of Runnable) to enable result returning
Make getRunnable method in Task return an Optional add isAsynchronous method to determine if task is being run asynchronously getCallable and getFuture methods to Task