utility function for creating observables for closeable resources

#1199 the answer to the issue was nagging at me when I tried to recommend it recently.  I think @zsxwing's solution was ok but would fail if there were repeated subscriptions to the observable returned.  I created a utility function on StringObservable to make it easier to use `using()` for objects that implement the `AutoCloseable` interface.

PS. I made a breaking change to arguments of `join(Observable<Object>)` to `join(Observable<String>)` and added a `Observable<String> toString(Observable<Object>)` to make up for it.

PPS. I made a `UnsafeFunc0<R>` scoped to this class but I would like to have `UnsafeFunc<N>` in the rx.functions packages and have `Func<N>` extends `UnsafeFunc<N>`.   Makes it clear to the compiler that we don't expect the code the user's are giving us to always work. This also helps the users because they don't have to always fill their closures with try catch blocks

```
() -> new FileReader(file)
```
vs.
```
() -> {
    try {
        return new FileReader(file);
    } catch (Exception e) {
        throw new RuntimeException(e);
    }
}
```