Move Task's getRunnable method into the RunnableTask interface
Create the RunnableRepeatingTask interface to represent a repeating task that processes a runnable
Create CallableTask and CallableRepeatingTask to represent tasks that return results
Give Scheduler methods option to run task asynchronously or not; Create methods that enable scheduling tasks that return results