AGPUSH-1045 : Java Sender API update after new message format

Hi,
This is a proposal for the new Java Sender API, basically we have now "sub" builders for the `message`, the `criteria` and the `config`, constructing a message looks like this now : 

```
 UnifiedMessage unifiedMessage = new UnifiedMessage.Builder()
                .pushApplicationId("c7fc6525-5506-4ca9-9cf1-55cc261ddb9c")
                .masterSecret("8b2f43a9-23c8-44fe-bee9-d6b0af9e316b")
                .criteria()
                  .aliases(Arrays.asList("john", "maria"))
                  .build()
                .message()
                  .alert("Hello from Java Sender API!")
                  .sound("default")
                  .badge("1") // iOS specific
                  .payload("some_key", "some_value") // optional attributes specific to your app
                  .payload("title", "Cool Title") // optional cordova Android specific attribute (default is appName)
                  .build()
                .build();
```

TBH, I don't know if this is an absolute good practice and if we should always return the "main" Builder instead, please comment and test.

This has been tested with success against https://github.com/aerogear/aerogear-unifiedpush-server/pull/411/ 

__This should merged only on master__


perhaps we could use assertj here ?