Take advantage of Guava's ListenableFuture

- Add "runTask..." methods to AsynchronousScheduler that accept Callable as task parameter

- Make use of ListenableFuture to simplify retrieval of task computation results.