Core configuration for Gradle, Git, Travis and license/news/readme
Interfaces and base classes to run asynchronous jobs

JDK concurrency utils (java.util.concurrent), guava, springframework and perhaps other libraries have a very good support for asynchronous tasks (AsyncFunction, AsyncTask, Future, etc.), but there is a need to encapsulate asynchronous tasks a bit more in order to avoid still existing plumbing code to control thread scheduling and execution.

An AsyncJob defines a contract to run tasks that accept certain data and optionally return certain response. It is like a Callable but behaves like a Future.

The JobExecutor is like a Executor/ExecutorService, but instead of returning a Future, it already returns the AsyncJob response. It means less development code. The JobExecutor is in charge to delegate successful/failures to the AsyncJob because the latter is who really knows what to do in such scenarios.

Then we have an JobExecutor implementation ready to be used by application including list library. The SimpleJobExecutor is based on ExecutorService, Future, Callable, etc. Here is where the plumbing code is done and make developers just think about how to implement the business logic, and not thing too much in the problems of a multi-threaded system.