Async refactor

This is a refactor of the background process (now async task) mini-framework inside Zanata. The new changes make the code less verbose and it uses more JVM and Guava constructs like Future and ListenableFuture.

Some things can be expanded upon later, like adding a way to cancel a task even if it means interrupting it. The interface allows for it, but the implementation currently doesn't