migration to sdk 2.0, asynchronous rewrite using rxjava primitives

This pull request is building upon my previous one (migrating to sdk 2.0 in blocking mode) and rewrites Workloads to extensively use RxJava primitives and Observables internally in order to be more asynchronous.
There still room for improvement (eg. waiting for all operations to stop in a workload is a bit sloppy as it relies on waiting for the last iteration...)