Favor on doOnCompleted over EndObserver, update dependencies

Oops, the commit message is wrong. `doOnCompleted` is only called when the observer successfully completes. There are two similar methods here that accomplish the behavior `doOnTerminate` and `finallyDo`. The only difference is that the former is called just before the Observable calls `onComplete` or `onError`. And the latter is called after the Observable calls those methods. I can't seem to find a reason to favor `doOnTerminate` over `finallyDo` in this case.