Reactive Dialog

This PR adds a DialogFragment returning an Observable<T>.

This allows for composition of actions over UI interactions (asking a user for data, confirmation etc..)

This is the first PR in a series of backport from work we did.
To help with comunication and my refactoring I'll issue the PR one by one as they get merged in or declined.
Even if you don't want to use a long exposing `UUID` is bad. Call `.toString()` and just pass around strings. Not only does this save you from leaking `UUID` but you can avoid to awful, awful Java serialization when persisting in a bundle.