toIterable() use distinguishable wrapper for checked exceptions

toIterable() now wraps checked exceptions reported through the Observable in a (newly created) ObservedException. This allows a catch block to distingush these exceptions from RuntimeExceptions that came through the Observable.