Operator GroupBy Pull Request - Review and Refactor

Refactored version of pull request https://github.com/Netflix/RxJava/pull/176 for issue https://github.com/Netflix/RxJava/issues/51

I would like to avoid delegation if possible since it will mean it needs to be kept in sync with Observable.

This refactored approach allows inheritance without delegation by composing the Observable  inside another operator function.