Added the window() operation.

window() returns an Observable<Observable<T>> that will chunk the source observable
based on several criteria; counts, time etc.

This differs from buffer() in that the underlying observables will all onComplete()
independently from their upstream Observable.