Async framework refactoring

This is the new async framework which lays the ground for the CDI version.
The previous version required the explicit use of `AsyncTask` to trigger these actions.
This new version simply requires that asynchrounous methods be marked with the `@Async` annotation and components holding these methods with `@ContainsAsyncMethods` (this part won't be necessary in CDI).
For example:
```java
public void asyncMethod(final String arg) {
    asyncTaskManager.startTask( new AsyncTask() {
        // Get the injected task handle
        AsyncTaskHandle handle = AsyncUtils.getOutjectedHandle();
        // Do some work
    } );
}
```
would now become:
```java
@ContainsAsyncMethods
public class MyComponent {
    ...
    @Async
    public Future<Void> asyncMethod(String arg, AsyncTaskHandle handle) {
        // Do some Work
    }
    ...
}
```

Handles should now be passed to the method in question, and there is a new `AsyncTaskHandleManager` which can keep them all in a shared place for later retrieval.

Quartz has now been deprecated as the default async Thread manager, and the implementation may be changed without affecting the rest of the code.

Testing notes:
Every asynchronous task should be tested to verify this change. This includes (there may be others I missed):
- Downloading a zip file (from both JSF and GWT)
- Copy Trans
- Copy version
- Client Source and Translated doc push
- Translation Memory clear
- Index rebuilding
It's more of a preference thing. If only one field needs hiding, I'd prefer the only Setter(None) to stand out. But you do need to look up the class level annotation to figure out what the rest of the fields are. 
I am fine with either. Not a blocker. 

----- Original Message -----

> From: "Carlos Munoz" <notifications@github.com>
> To: "zanata/zanata-server" <zanata-server@noreply.github.com>
> Cc: "Patrick Huang" <pahuang@redhat.com>
> Sent: Tuesday, October 14, 2014 11:47:22 AM
> Subject: Re: [zanata-server] Async framework refactoring (#606)

> In zanata-war/src/main/java/org/zanata/async/handle/CopyTransTaskHandle.java:
> >   * @author Carlos Munoz <a
> >   *         href="mailto:camunoz@redhat.com">camunoz@redhat.com</a>
> >   */
> > -public abstract class SimpleAsyncTask<V> implements
> > -        AsyncTask<V, AsyncTaskHandle<V>> {
> > +public class CopyTransTaskHandle extends AsyncTaskHandle<Void> {
> > +    @Getter
> > +    @Setter
> > +    private String cancelledBy;
> > +
> > +    @Getter
> > +    @Setter
> > +    private long cancelledTime;
> > +
> > +    @Getter
> > +    @Setter
> > +    private String triggeredBy;
> > +
> >      @Getter

> This one is up for discussion. While I agree that it would reduce the amount
> of code, I think it reduces readability. I like the fact that just by
> looking at the attribute you are able to determine which accessors are
> present and their visibility. Otherwise you have to look at the class to see
> if it's generating any by default. This could lead to attributes being
> exposed unintentionally if we are not careful.
> I can be convinced though...

> —
> Reply to this email directly or view it on GitHub .