Fix Window by Count Unsubscribe Behavior

This fixes https://github.com/ReactiveX/RxJava/issues/1546 where unsubscribes would occur prematurely for non-overlapping `window(size)` and would not unsubscribe at all for overlapping `window(size, skip)`.

It also reorganizes the `window` unit tests which were all combined in one file when the implementations are split across 4 files. This is now easier to understand and use.
Here is a possible fix: https://github.com/ReactiveX/RxJava/pull/1833

My eyes are glazing over though so it may be completely wrong :-)