Deploy Gradle

#### Configuration 

An additional source set, the `api` **source set** is added. It should contain API classes and interfaces. 

The output directories are used for *generated resources*. Resources are going to be generated for testing, therefore the *working directory* for the `test` **task** is set to the single output directory associated with the `test` **source set**.

Dependency                                  | Description
------------------------------------------  | --------------
com.google.guava:guava              | core libraries
com.google.code.findbugs:jsr305  | annotations (software defect detection)
net.jcip:jcip-annotations                 | annotations (concurrency)
org.tinylog:tinylog                          | logger
com.squareup.dagger:dagger      | dependency injector
junit:junit                                        | unit testing framework