New signature for HystrixObservableCollapser

Replacing mapResponseToRequests with functional style selectors and allowing streaming response from Observable.

Intent is for a collapser implementation like this:

```java
public class BookmarkCommand extends HystrixObservableCollapser<Integer, Bookmark, Bookmark, Video> {

    private final Video video;

    public BookmarkCommand(Video video) {
        this.video = video;
    }

    @Override
    public Video getRequestArgument() {
        return video;
    }

    @Override
    protected HystrixObservableCommand<Bookmark> createCommand(Collection<CollapsedRequest<Bookmark, Video>> requests) {
        List<Video> videos = new ArrayList<>();
        for (CollapsedRequest<Bookmark, Video> r : requests) {
            videos.add(r.getArgument());
        }
        return new BookmarksCommand(videos);
    }

    protected void onMissingResponse(CollapsedRequest<Bookmark, Video> r) {
        // would normally send a default instead of failing here
        r.setException(new Exception("No bookmark"));
    }

    @Override
    protected Func1<Bookmark, Integer> getBatchReturnTypeKeySelector() {
        return new Func1<Bookmark, Integer>() {

            @Override
            public Integer call(Bookmark b) {
                return b.getVideoId();
            }

        };
    }

    @Override
    protected Func1<Video, Integer> getRequestArgumentKeySelector() {
        return new Func1<Video, Integer>() {

            @Override
            public Integer call(Video v) {
                return v.getId();
            }

        };
    }

    @Override
    protected Func1<Bookmark, Bookmark> getBatchReturnTypeToResponseTypeMapper() {
        return new Func1<Bookmark, Bookmark>() {

            @Override
            public Bookmark call(Bookmark b) {
                return b;
            }

        };
    }

}
```