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.
`protected` doesn't really serve any value here. I think `public` is fine.